react-native-debug-toolkit 3.3.8 → 3.5.0

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.
Files changed (192) hide show
  1. package/lib/commonjs/constants/logLevels.js +19 -0
  2. package/lib/commonjs/constants/logLevels.js.map +1 -0
  3. package/lib/commonjs/core/initialize.js +30 -19
  4. package/lib/commonjs/core/initialize.js.map +1 -1
  5. package/lib/commonjs/features/console/ConsoleLogTab.js +4 -15
  6. package/lib/commonjs/features/console/ConsoleLogTab.js.map +1 -1
  7. package/lib/commonjs/features/console/index.js +15 -8
  8. package/lib/commonjs/features/console/index.js.map +1 -1
  9. package/lib/commonjs/features/network/NetworkLogTab.js +91 -93
  10. package/lib/commonjs/features/network/NetworkLogTab.js.map +1 -1
  11. package/lib/commonjs/features/network/index.js +7 -4
  12. package/lib/commonjs/features/network/index.js.map +1 -1
  13. package/lib/commonjs/features/sessionHistory/SessionHistoryTab.js +1044 -0
  14. package/lib/commonjs/features/sessionHistory/SessionHistoryTab.js.map +1 -0
  15. package/lib/commonjs/features/sessionHistory/index.js +103 -0
  16. package/lib/commonjs/features/sessionHistory/index.js.map +1 -0
  17. package/lib/commonjs/features/track/index.js +4 -3
  18. package/lib/commonjs/features/track/index.js.map +1 -1
  19. package/lib/commonjs/index.js +20 -0
  20. package/lib/commonjs/index.js.map +1 -1
  21. package/lib/commonjs/ui/DebugView.js +1 -0
  22. package/lib/commonjs/ui/DebugView.js.map +1 -1
  23. package/lib/commonjs/ui/panel/DebugPanel.js +67 -34
  24. package/lib/commonjs/ui/panel/DebugPanel.js.map +1 -1
  25. package/lib/commonjs/ui/panel/FeatureIntroCard.js +131 -0
  26. package/lib/commonjs/ui/panel/FeatureIntroCard.js.map +1 -0
  27. package/lib/commonjs/ui/panel/FeatureRail.js +163 -0
  28. package/lib/commonjs/ui/panel/FeatureRail.js.map +1 -0
  29. package/lib/commonjs/ui/panel/FloatPanelView.js +147 -22
  30. package/lib/commonjs/ui/panel/FloatPanelView.js.map +1 -1
  31. package/lib/commonjs/ui/panel/buildFeatureSummary.js +207 -0
  32. package/lib/commonjs/ui/panel/buildFeatureSummary.js.map +1 -0
  33. package/lib/commonjs/ui/panel/filterFeatureSnapshot.js +43 -0
  34. package/lib/commonjs/ui/panel/filterFeatureSnapshot.js.map +1 -0
  35. package/lib/commonjs/ui/theme/colors.js +6 -0
  36. package/lib/commonjs/ui/theme/colors.js.map +1 -1
  37. package/lib/commonjs/utils/DaemonClient.js +30 -8
  38. package/lib/commonjs/utils/DaemonClient.js.map +1 -1
  39. package/lib/commonjs/utils/SessionManager.js +132 -0
  40. package/lib/commonjs/utils/SessionManager.js.map +1 -0
  41. package/lib/commonjs/utils/StorageAdapter.js +104 -0
  42. package/lib/commonjs/utils/StorageAdapter.js.map +1 -0
  43. package/lib/commonjs/utils/createChannelFeature.js +22 -5
  44. package/lib/commonjs/utils/createChannelFeature.js.map +1 -1
  45. package/lib/commonjs/utils/createPersistedObservableStore.js +14 -8
  46. package/lib/commonjs/utils/createPersistedObservableStore.js.map +1 -1
  47. package/lib/commonjs/utils/debugPreferences.js +28 -5
  48. package/lib/commonjs/utils/debugPreferences.js.map +1 -1
  49. package/lib/commonjs/utils/deviceReport.js +5 -1
  50. package/lib/commonjs/utils/deviceReport.js.map +1 -1
  51. package/lib/commonjs/utils/logRuntime.js +32 -0
  52. package/lib/commonjs/utils/logRuntime.js.map +1 -0
  53. package/lib/module/constants/logLevels.js +15 -0
  54. package/lib/module/constants/logLevels.js.map +1 -0
  55. package/lib/module/core/initialize.js +30 -19
  56. package/lib/module/core/initialize.js.map +1 -1
  57. package/lib/module/features/console/ConsoleLogTab.js +1 -12
  58. package/lib/module/features/console/ConsoleLogTab.js.map +1 -1
  59. package/lib/module/features/console/index.js +15 -8
  60. package/lib/module/features/console/index.js.map +1 -1
  61. package/lib/module/features/network/NetworkLogTab.js +91 -93
  62. package/lib/module/features/network/NetworkLogTab.js.map +1 -1
  63. package/lib/module/features/network/index.js +7 -4
  64. package/lib/module/features/network/index.js.map +1 -1
  65. package/lib/module/features/sessionHistory/SessionHistoryTab.js +1039 -0
  66. package/lib/module/features/sessionHistory/SessionHistoryTab.js.map +1 -0
  67. package/lib/module/features/sessionHistory/index.js +99 -0
  68. package/lib/module/features/sessionHistory/index.js.map +1 -0
  69. package/lib/module/features/track/index.js +4 -3
  70. package/lib/module/features/track/index.js.map +1 -1
  71. package/lib/module/index.js +3 -0
  72. package/lib/module/index.js.map +1 -1
  73. package/lib/module/ui/DebugView.js +1 -0
  74. package/lib/module/ui/DebugView.js.map +1 -1
  75. package/lib/module/ui/panel/DebugPanel.js +67 -34
  76. package/lib/module/ui/panel/DebugPanel.js.map +1 -1
  77. package/lib/module/ui/panel/FeatureIntroCard.js +126 -0
  78. package/lib/module/ui/panel/FeatureIntroCard.js.map +1 -0
  79. package/lib/module/ui/panel/FeatureRail.js +158 -0
  80. package/lib/module/ui/panel/FeatureRail.js.map +1 -0
  81. package/lib/module/ui/panel/FloatPanelView.js +148 -23
  82. package/lib/module/ui/panel/FloatPanelView.js.map +1 -1
  83. package/lib/module/ui/panel/buildFeatureSummary.js +203 -0
  84. package/lib/module/ui/panel/buildFeatureSummary.js.map +1 -0
  85. package/lib/module/ui/panel/filterFeatureSnapshot.js +39 -0
  86. package/lib/module/ui/panel/filterFeatureSnapshot.js.map +1 -0
  87. package/lib/module/ui/theme/colors.js +6 -0
  88. package/lib/module/ui/theme/colors.js.map +1 -1
  89. package/lib/module/utils/DaemonClient.js +30 -8
  90. package/lib/module/utils/DaemonClient.js.map +1 -1
  91. package/lib/module/utils/SessionManager.js +127 -0
  92. package/lib/module/utils/SessionManager.js.map +1 -0
  93. package/lib/module/utils/StorageAdapter.js +96 -0
  94. package/lib/module/utils/StorageAdapter.js.map +1 -0
  95. package/lib/module/utils/createChannelFeature.js +22 -5
  96. package/lib/module/utils/createChannelFeature.js.map +1 -1
  97. package/lib/module/utils/createPersistedObservableStore.js +14 -8
  98. package/lib/module/utils/createPersistedObservableStore.js.map +1 -1
  99. package/lib/module/utils/debugPreferences.js +27 -5
  100. package/lib/module/utils/debugPreferences.js.map +1 -1
  101. package/lib/module/utils/deviceReport.js +4 -1
  102. package/lib/module/utils/deviceReport.js.map +1 -1
  103. package/lib/module/utils/logRuntime.js +26 -0
  104. package/lib/module/utils/logRuntime.js.map +1 -0
  105. package/lib/typescript/src/constants/logLevels.d.ts +3 -0
  106. package/lib/typescript/src/constants/logLevels.d.ts.map +1 -0
  107. package/lib/typescript/src/core/initialize.d.ts +4 -0
  108. package/lib/typescript/src/core/initialize.d.ts.map +1 -1
  109. package/lib/typescript/src/features/console/ConsoleLogTab.d.ts.map +1 -1
  110. package/lib/typescript/src/features/console/index.d.ts +2 -1
  111. package/lib/typescript/src/features/console/index.d.ts.map +1 -1
  112. package/lib/typescript/src/features/network/NetworkLogTab.d.ts.map +1 -1
  113. package/lib/typescript/src/features/network/index.d.ts +2 -1
  114. package/lib/typescript/src/features/network/index.d.ts.map +1 -1
  115. package/lib/typescript/src/features/sessionHistory/SessionHistoryTab.d.ts +20 -0
  116. package/lib/typescript/src/features/sessionHistory/SessionHistoryTab.d.ts.map +1 -0
  117. package/lib/typescript/src/features/sessionHistory/index.d.ts +4 -0
  118. package/lib/typescript/src/features/sessionHistory/index.d.ts.map +1 -0
  119. package/lib/typescript/src/features/track/index.d.ts +2 -1
  120. package/lib/typescript/src/features/track/index.d.ts.map +1 -1
  121. package/lib/typescript/src/index.d.ts +4 -0
  122. package/lib/typescript/src/index.d.ts.map +1 -1
  123. package/lib/typescript/src/types/feature.d.ts +1 -1
  124. package/lib/typescript/src/types/feature.d.ts.map +1 -1
  125. package/lib/typescript/src/types/index.d.ts +2 -0
  126. package/lib/typescript/src/types/index.d.ts.map +1 -1
  127. package/lib/typescript/src/ui/DebugView.d.ts.map +1 -1
  128. package/lib/typescript/src/ui/panel/DebugPanel.d.ts +3 -1
  129. package/lib/typescript/src/ui/panel/DebugPanel.d.ts.map +1 -1
  130. package/lib/typescript/src/ui/panel/FeatureIntroCard.d.ts +11 -0
  131. package/lib/typescript/src/ui/panel/FeatureIntroCard.d.ts.map +1 -0
  132. package/lib/typescript/src/ui/panel/FeatureRail.d.ts +16 -0
  133. package/lib/typescript/src/ui/panel/FeatureRail.d.ts.map +1 -0
  134. package/lib/typescript/src/ui/panel/FloatPanelView.d.ts.map +1 -1
  135. package/lib/typescript/src/ui/panel/buildFeatureSummary.d.ts +13 -0
  136. package/lib/typescript/src/ui/panel/buildFeatureSummary.d.ts.map +1 -0
  137. package/lib/typescript/src/ui/panel/filterFeatureSnapshot.d.ts +3 -0
  138. package/lib/typescript/src/ui/panel/filterFeatureSnapshot.d.ts.map +1 -0
  139. package/lib/typescript/src/ui/theme/colors.d.ts +5 -0
  140. package/lib/typescript/src/ui/theme/colors.d.ts.map +1 -1
  141. package/lib/typescript/src/utils/DaemonClient.d.ts +7 -1
  142. package/lib/typescript/src/utils/DaemonClient.d.ts.map +1 -1
  143. package/lib/typescript/src/utils/SessionManager.d.ts +30 -0
  144. package/lib/typescript/src/utils/SessionManager.d.ts.map +1 -0
  145. package/lib/typescript/src/utils/StorageAdapter.d.ts +38 -0
  146. package/lib/typescript/src/utils/StorageAdapter.d.ts.map +1 -0
  147. package/lib/typescript/src/utils/createChannelFeature.d.ts +2 -0
  148. package/lib/typescript/src/utils/createChannelFeature.d.ts.map +1 -1
  149. package/lib/typescript/src/utils/createPersistedObservableStore.d.ts +4 -1
  150. package/lib/typescript/src/utils/createPersistedObservableStore.d.ts.map +1 -1
  151. package/lib/typescript/src/utils/debugPreferences.d.ts +1 -3
  152. package/lib/typescript/src/utils/debugPreferences.d.ts.map +1 -1
  153. package/lib/typescript/src/utils/deviceReport.d.ts +1 -0
  154. package/lib/typescript/src/utils/deviceReport.d.ts.map +1 -1
  155. package/lib/typescript/src/utils/logRuntime.d.ts +13 -0
  156. package/lib/typescript/src/utils/logRuntime.d.ts.map +1 -0
  157. package/package.json +9 -1
  158. package/src/constants/logLevels.ts +13 -0
  159. package/src/core/initialize.ts +49 -25
  160. package/src/features/console/ConsoleLogTab.tsx +1 -14
  161. package/src/features/console/index.ts +18 -8
  162. package/src/features/network/NetworkLogTab.tsx +61 -71
  163. package/src/features/network/index.ts +12 -3
  164. package/src/features/sessionHistory/SessionHistoryTab.tsx +691 -0
  165. package/src/features/sessionHistory/index.ts +102 -0
  166. package/src/features/track/index.ts +10 -3
  167. package/src/index.ts +11 -0
  168. package/src/types/feature.ts +2 -1
  169. package/src/types/index.ts +10 -0
  170. package/src/ui/DebugView.tsx +1 -0
  171. package/src/ui/panel/DebugPanel.tsx +60 -30
  172. package/src/ui/panel/FeatureIntroCard.tsx +127 -0
  173. package/src/ui/panel/FeatureRail.tsx +165 -0
  174. package/src/ui/panel/FloatPanelView.tsx +154 -15
  175. package/src/ui/panel/buildFeatureSummary.ts +288 -0
  176. package/src/ui/panel/filterFeatureSnapshot.ts +51 -0
  177. package/src/ui/theme/colors.ts +7 -0
  178. package/src/utils/DaemonClient.ts +33 -5
  179. package/src/utils/SessionManager.ts +174 -0
  180. package/src/utils/StorageAdapter.ts +135 -0
  181. package/src/utils/createChannelFeature.ts +28 -6
  182. package/src/utils/createPersistedObservableStore.ts +18 -10
  183. package/src/utils/debugPreferences.ts +38 -7
  184. package/src/utils/deviceReport.ts +5 -1
  185. package/src/utils/logRuntime.ts +39 -0
  186. package/lib/commonjs/ui/panel/FeatureTabBar.js +0 -182
  187. package/lib/commonjs/ui/panel/FeatureTabBar.js.map +0 -1
  188. package/lib/module/ui/panel/FeatureTabBar.js +0 -177
  189. package/lib/module/ui/panel/FeatureTabBar.js.map +0 -1
  190. package/lib/typescript/src/ui/panel/FeatureTabBar.d.ts +0 -13
  191. package/lib/typescript/src/ui/panel/FeatureTabBar.d.ts.map +0 -1
  192. package/src/ui/panel/FeatureTabBar.tsx +0 -204
@@ -1,5 +1,5 @@
1
1
  import type { FeatureDataProvider } from '../types';
2
- import { type DebugDeviceReport, type DebugDeviceReportOptions } from './deviceReport';
2
+ import { type DebugDeviceReport, type DebugDeviceReportOptions, type SessionInfo } from './deviceReport';
3
3
  export type DaemonConnectionMode = 'simulator' | 'device';
4
4
  export interface DaemonSettings {
5
5
  mode: DaemonConnectionMode;
@@ -47,6 +47,7 @@ export interface ReportToDaemonOptions extends DebugDeviceReportOptions {
47
47
  endpoint?: string;
48
48
  timeoutMs?: number;
49
49
  token?: string;
50
+ session?: SessionInfo;
50
51
  }
51
52
  export interface ReportResult {
52
53
  ok: boolean;
@@ -75,6 +76,7 @@ type AbortControllerLike = {
75
76
  abort: () => void;
76
77
  };
77
78
  type AbortControllerCtor = new () => AbortControllerLike;
79
+ type SessionProvider = () => SessionInfo;
78
80
  export declare function getDefaultDaemonEndpoint(): string;
79
81
  export declare function buildDeviceDaemonEndpoint(host: string): string;
80
82
  export declare function normalizeDaemonSettings(settings: DaemonSettings): {
@@ -97,6 +99,7 @@ export declare class DaemonClient {
97
99
  private _onEndpointDetected;
98
100
  private _restorePromise;
99
101
  private _sessionId;
102
+ private _sessionProvider;
100
103
  private _onConnectionChange;
101
104
  constructor(options: DaemonClientOptions);
102
105
  getSettings(): DaemonSettings;
@@ -109,6 +112,8 @@ export declare class DaemonClient {
109
112
  setStreamingEnabled(enabled: boolean): void;
110
113
  setEndpointDetector(callback: (url: string) => void): void;
111
114
  setOnConnectionChange(callback: (() => void) | undefined): void;
115
+ setSessionProvider(provider: SessionProvider): void;
116
+ clearSessionProvider(): void;
112
117
  restore(): Promise<void>;
113
118
  private doRestore;
114
119
  reportOnce(options?: ReportToDaemonOptions): Promise<ReportResult>;
@@ -117,6 +122,7 @@ export declare class DaemonClient {
117
122
  private resolveFetch;
118
123
  private createAbortController;
119
124
  private notifyEndpoint;
125
+ private resolveSession;
120
126
  private emitStatus;
121
127
  private doPost;
122
128
  private emitStreamStatus;
@@ -1 +1 @@
1
- {"version":3,"file":"DaemonClient.d.ts","sourceRoot":"","sources":["../../../../src/utils/DaemonClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DaemonClient.d.ts","sourceRoot":"","sources":["../../../../src/utils/DaemonClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { SessionInfo } from './deviceReport';
2
+ import type { StorageAdapter } from './StorageAdapter';
3
+ export type LogFeatureKey = 'console_logs' | 'network_logs' | 'track_logs';
4
+ export type LogSession = SessionInfo;
5
+ export interface SessionIndex {
6
+ currentSessionId: string;
7
+ sessions: LogSession[];
8
+ maxSessions: number;
9
+ }
10
+ export interface SessionManagerOptions {
11
+ maxSessions?: number;
12
+ featureKeys?: LogFeatureKey[];
13
+ }
14
+ export declare class SessionManager {
15
+ private readonly storage;
16
+ private readonly currentSession;
17
+ private readonly maxSessions;
18
+ private readonly featureKeys;
19
+ constructor(storage: StorageAdapter, options?: SessionManagerOptions);
20
+ initialize(): Promise<void>;
21
+ getCurrentSession(): LogSession;
22
+ getSessionHistory(): Promise<LogSession[]>;
23
+ getLogStorageKey(featureKey: LogFeatureKey, sessionId?: string): string;
24
+ loadSessionLogs<T>(sessionId: string, featureKey: LogFeatureKey): Promise<T[]>;
25
+ getSessionLogCount(sessionId: string, featureKey: LogFeatureKey): Promise<number>;
26
+ clearCurrentSessionLogs(featureKey: LogFeatureKey): Promise<void>;
27
+ cleanupOldSessions(): Promise<number>;
28
+ private cleanupSessionLogs;
29
+ }
30
+ //# sourceMappingURL=SessionManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionManager.d.ts","sourceRoot":"","sources":["../../../../src/utils/SessionManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG,cAAc,GAAG,YAAY,CAAC;AAE3E,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC;AAErC,MAAM,WAAW,YAAY;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,aAAa,EAAE,CAAC;CAC/B;AAmDD,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAa;IAC5C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkB;gBAElC,OAAO,EAAE,cAAc,EAAE,OAAO,GAAE,qBAA0B;IAOlE,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBjC,iBAAiB,IAAI,UAAU;IAIzB,iBAAiB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAKhD,gBAAgB,CAAC,UAAU,EAAE,aAAa,EAAE,SAAS,SAAyB,GAAG,MAAM;IAIjF,eAAe,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAc9E,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAWjF,uBAAuB,CAAC,UAAU,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjE,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;YAsB7B,kBAAkB;CAOjC"}
@@ -0,0 +1,38 @@
1
+ export interface StorageAdapter {
2
+ getItem(key: string): string | null | Promise<string | null>;
3
+ setItem(key: string, value: string): void | Promise<void>;
4
+ removeItem(key: string): void | Promise<void>;
5
+ }
6
+ type AsyncStorageLike = {
7
+ getItem: (key: string) => Promise<string | null>;
8
+ setItem: (key: string, value: string) => Promise<void>;
9
+ removeItem: (key: string) => Promise<void>;
10
+ };
11
+ type MMKVLike = {
12
+ getString: (key: string) => string | undefined;
13
+ set: (key: string, value: string) => void;
14
+ delete: (key: string) => void;
15
+ };
16
+ export declare class MemoryStorageAdapter implements StorageAdapter {
17
+ private readonly store;
18
+ getItem(key: string): string | null;
19
+ setItem(key: string, value: string): void;
20
+ removeItem(key: string): void;
21
+ }
22
+ export declare class AsyncStorageAdapter implements StorageAdapter {
23
+ private readonly storage;
24
+ constructor(storage: AsyncStorageLike);
25
+ getItem(key: string): Promise<string | null>;
26
+ setItem(key: string, value: string): Promise<void>;
27
+ removeItem(key: string): Promise<void>;
28
+ }
29
+ export declare class MMKVStorageAdapter implements StorageAdapter {
30
+ private readonly storage;
31
+ constructor(storage: MMKVLike);
32
+ getItem(key: string): string | null;
33
+ setItem(key: string, value: string): void;
34
+ removeItem(key: string): void;
35
+ }
36
+ export declare function createDefaultLogStorage(): StorageAdapter;
37
+ export {};
38
+ //# sourceMappingURL=StorageAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageAdapter.d.ts","sourceRoot":"","sources":["../../../../src/utils/StorageAdapter.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C;AAED,KAAK,gBAAgB,GAAG;IACtB,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACjD,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5C,CAAC;AAEF,KAAK,QAAQ,GAAG;IACd,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC/C,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/B,CAAC;AAQF,qBAAa,oBAAqB,YAAW,cAAc;IACzD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA6B;IAEnD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAInC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAIzC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;CAG9B;AAED,qBAAa,mBAAoB,YAAW,cAAc;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,gBAAgB;IAEtD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAI5C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGvC;AAED,qBAAa,kBAAmB,YAAW,cAAc;IACvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAW;gBAEvB,OAAO,EAAE,QAAQ;IAI7B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAInC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAIzC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;CAO9B;AAsDD,wBAAgB,uBAAuB,IAAI,cAAc,CAExD"}
@@ -1,7 +1,9 @@
1
1
  import type { ComponentType } from 'react';
2
2
  import type { DebugFeature, DebugFeatureRenderProps } from '../types';
3
3
  import type { EventChannel } from './createEventChannel';
4
+ import type { StorageAdapter } from './StorageAdapter';
4
5
  export interface ChannelFeaturePersistConfig<TEntry> {
6
+ storage: StorageAdapter;
5
7
  storageKey: string;
6
8
  maxPersist: number;
7
9
  debounceMs?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"createChannelFeature.d.ts","sourceRoot":"","sources":["../../../../src/utils/createChannelFeature.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAwB,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAC5F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAMzD,MAAM,WAAW,2BAA2B,CAAC,MAAM;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;CACxC;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,SAAS;IAAE,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,EAC3E,UAAU,EAAE,MAAM,YAAY,CAAC,QAAQ,CAAC,EACxC,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,KAAK,MAAM,EAClD,OAAO,EAAE;IACP,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,aAAa,CAAC,uBAAuB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACjE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,2BAA2B,CAAC,MAAM,CAAC,CAAC;IAC9C,0EAA0E;IAC1E,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,QAAQ,GAAG,IAAI,CAAC;IACpD,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC;CACrC,GACA,YAAY,CAAC,MAAM,EAAE,CAAC,CAqDxB"}
1
+ {"version":3,"file":"createChannelFeature.d.ts","sourceRoot":"","sources":["../../../../src/utils/createChannelFeature.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAwB,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAC5F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAMzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAIvD,MAAM,WAAW,2BAA2B,CAAC,MAAM;IACjD,OAAO,EAAE,cAAc,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;CACxC;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,SAAS;IAAE,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,EAC3E,UAAU,EAAE,MAAM,YAAY,CAAC,QAAQ,CAAC,EACxC,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,KAAK,MAAM,EAClD,OAAO,EAAE;IACP,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,aAAa,CAAC,uBAAuB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACjE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,2BAA2B,CAAC,MAAM,CAAC,CAAC;IAC9C,0EAA0E;IAC1E,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,QAAQ,GAAG,IAAI,CAAC;IACpD,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC;CACrC,GACA,YAAY,CAAC,MAAM,EAAE,CAAC,CAsExB"}
@@ -1,5 +1,7 @@
1
1
  import { type ObservableStore } from './createObservableStore';
2
+ import type { StorageAdapter } from './StorageAdapter';
2
3
  export interface PersistedStoreOptions<T> {
4
+ storage: StorageAdapter;
3
5
  storageKey: string;
4
6
  maxPersist: number;
5
7
  debounceMs?: number;
@@ -8,7 +10,8 @@ export interface PersistedStoreOptions<T> {
8
10
  export interface PersistedObservableStore<T> extends ObservableStore<T> {
9
11
  nextId: () => string;
10
12
  ready: Promise<void>;
11
- destroy: () => void;
13
+ clearPersisted: () => void;
14
+ dispose: () => void;
12
15
  }
13
16
  export declare function createPersistedObservableStore<T extends {
14
17
  id?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"createPersistedObservableStore.d.ts","sourceRoot":"","sources":["../../../../src/utils/createPersistedObservableStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAGtF,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC;CACnC;AAED,MAAM,WAAW,wBAAwB,CAAC,CAAC,CAAE,SAAQ,eAAe,CAAC,CAAC,CAAC;IACrE,MAAM,EAAE,MAAM,MAAM,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACrB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,8BAA8B,CAAC,CAAC,SAAS;IAAE,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,EACtE,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAChC,wBAAwB,CAAC,CAAC,CAAC,CAsE7B"}
1
+ {"version":3,"file":"createPersistedObservableStore.d.ts","sourceRoot":"","sources":["../../../../src/utils/createPersistedObservableStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACtF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACtC,OAAO,EAAE,cAAc,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC;CACnC;AAED,MAAM,WAAW,wBAAwB,CAAC,CAAC,CAAE,SAAQ,eAAe,CAAC,CAAC,CAAC;IACrE,MAAM,EAAE,MAAM,MAAM,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACrB,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,8BAA8B,CAAC,CAAC,SAAS;IAAE,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,EACtE,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAChC,wBAAwB,CAAC,CAAC,CAAC,CA4E7B"}
@@ -1,11 +1,9 @@
1
1
  export declare function setPreference(key: string, value: string): Promise<void>;
2
2
  export declare function getPreference(key: string): Promise<string | null>;
3
+ export declare function removePreference(key: string): Promise<void>;
3
4
  export declare const KEYS: {
4
5
  readonly fabPosition: "@react_native_debug_toolkit/fab_position";
5
6
  readonly lastTab: "@react_native_debug_toolkit/last_tab";
6
- readonly consoleLogs: "@react_native_debug_toolkit/console_logs";
7
- readonly networkLogs: "@react_native_debug_toolkit/network_logs";
8
- readonly trackLogs: "@react_native_debug_toolkit/track_logs";
9
7
  readonly computerHost: "@react_native_debug_toolkit/computer_host";
10
8
  readonly daemonPort: "@react_native_debug_toolkit/daemon_port";
11
9
  };
@@ -1 +1 @@
1
- {"version":3,"file":"debugPreferences.d.ts","sourceRoot":"","sources":["../../../../src/utils/debugPreferences.ts"],"names":[],"mappings":"AAkCA,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB7E;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA0BvE;AAED,eAAO,MAAM,IAAI;;;;;;;;CAQP,CAAC"}
1
+ {"version":3,"file":"debugPreferences.d.ts","sourceRoot":"","sources":["../../../../src/utils/debugPreferences.ts"],"names":[],"mappings":"AA0CA,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB7E;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA0BvE;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBjE;AAED,eAAO,MAAM,IAAI;;;;;CAKP,CAAC"}
@@ -20,6 +20,7 @@ export interface DebugDeviceReport {
20
20
  session?: SessionInfo;
21
21
  logs: Record<string, unknown[] | undefined>;
22
22
  }
23
+ export declare function sanitizeDebugLogEntry(value: unknown, maxBodyBytes?: number): unknown;
23
24
  export declare function createDebugDeviceReport(options?: DebugDeviceReportOptions & {
24
25
  featureProvider?: FeatureDataProvider;
25
26
  session?: SessionInfo;
@@ -1 +1 @@
1
- {"version":3,"file":"deviceReport.d.ts","sourceRoot":"","sources":["../../../../src/utils/deviceReport.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAOpD,MAAM,WAAW,wBAAwB;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,CAAC,CAAC;IACX,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC,CAAC;CAC7C;AAuID,wBAAgB,uBAAuB,CACrC,OAAO,GAAE,wBAAwB,GAAG;IAAE,eAAe,CAAC,EAAE,mBAAmB,CAAC;IAAC,OAAO,CAAC,EAAE,WAAW,CAAA;CAAO,GACxG,iBAAiB,CAyCnB"}
1
+ {"version":3,"file":"deviceReport.d.ts","sourceRoot":"","sources":["../../../../src/utils/deviceReport.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAOpD,MAAM,WAAW,wBAAwB;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,CAAC,CAAC;IACX,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC,CAAC;CAC7C;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,SAAyB,GAAG,OAAO,CAEpG;AAuID,wBAAgB,uBAAuB,CACrC,OAAO,GAAE,wBAAwB,GAAG;IAAE,eAAe,CAAC,EAAE,mBAAmB,CAAC;IAAC,OAAO,CAAC,EAAE,WAAW,CAAA;CAAO,GACxG,iBAAiB,CAyCnB"}
@@ -0,0 +1,13 @@
1
+ import { SessionManager, type SessionManagerOptions } from './SessionManager';
2
+ import { type StorageAdapter } from './StorageAdapter';
3
+ export interface LogRuntimeContext {
4
+ logStorage: StorageAdapter;
5
+ sessionManager: SessionManager;
6
+ }
7
+ export interface LogRuntimeOptions extends SessionManagerOptions {
8
+ logStorage?: StorageAdapter;
9
+ }
10
+ export declare function createLogRuntime(options?: LogRuntimeOptions): LogRuntimeContext;
11
+ export declare function setDefaultLogRuntime(runtime: LogRuntimeContext | null): void;
12
+ export declare function getDefaultLogRuntime(): LogRuntimeContext;
13
+ //# sourceMappingURL=logRuntime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logRuntime.d.ts","sourceRoot":"","sources":["../../../../src/utils/logRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,cAAc,CAAC;IAC3B,cAAc,EAAE,cAAc,CAAC;CAChC;AAED,MAAM,WAAW,iBAAkB,SAAQ,qBAAqB;IAC9D,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B;AAID,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,iBAAsB,GAAG,iBAAiB,CASnF;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,GAAG,IAAI,CAE5E;AAED,wBAAgB,oBAAoB,IAAI,iBAAiB,CAMxD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-debug-toolkit",
3
- "version": "3.3.8",
3
+ "version": "3.5.0",
4
4
  "description": "A local-first React Native debug toolkit with Web Console, HTTP API, and MCP support for AI-readable app logs",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
@@ -54,12 +54,20 @@
54
54
  },
55
55
  "peerDependencies": {
56
56
  "@react-native-clipboard/clipboard": ">=1.0.0",
57
+ "@react-native-async-storage/async-storage": ">=1.0.0",
58
+ "react-native-mmkv": ">=2.0.0",
57
59
  "react": ">=18.0.0",
58
60
  "react-native": ">=0.72.0"
59
61
  },
60
62
  "peerDependenciesMeta": {
63
+ "@react-native-async-storage/async-storage": {
64
+ "optional": true
65
+ },
61
66
  "@react-native-clipboard/clipboard": {
62
67
  "optional": true
68
+ },
69
+ "react-native-mmkv": {
70
+ "optional": true
63
71
  }
64
72
  },
65
73
  "devDependencies": {
@@ -0,0 +1,13 @@
1
+ export const LEVEL_COLORS: Record<string, string> = {
2
+ log: '#8E8E93',
3
+ info: '#007AFF',
4
+ warn: '#FF9500',
5
+ error: '#FF3B30',
6
+ };
7
+
8
+ export const LEVEL_ICONS: Record<string, string> = {
9
+ log: '●',
10
+ info: 'ℹ',
11
+ warn: '⚠',
12
+ error: '✕',
13
+ };
@@ -12,8 +12,15 @@ import type { TrackFeatureConfig } from '../features/track';
12
12
  import { createEnvironmentFeature } from '../features/environment';
13
13
  import { createClipboardFeature } from '../features/clipboard';
14
14
  import { createDevConnectFeature, restoreDevConnectSettingsToDaemon, nativeIsDebugBuild } from '../features/devConnect';
15
+ import { createSessionHistoryFeature } from '../features/sessionHistory';
15
16
  import { daemonClient } from '../utils/DaemonClient';
16
17
  import type { AnyDebugFeature, BuiltInFeatureName } from '../types';
18
+ import type { StorageAdapter } from '../utils/StorageAdapter';
19
+ import {
20
+ createLogRuntime,
21
+ setDefaultLogRuntime,
22
+ type LogRuntimeContext,
23
+ } from '../utils/logRuntime';
17
24
 
18
25
  const isDebugMode = __DEV__;
19
26
 
@@ -27,26 +34,31 @@ export interface FeatureConfigs {
27
34
  environment?: Parameters<typeof createEnvironmentFeature>[0];
28
35
  clipboard?: boolean;
29
36
  devConnect?: boolean;
37
+ sessionHistory?: boolean;
30
38
  }
31
39
 
32
40
  export interface InitializeOptions {
33
41
  features?: FeatureConfigs;
34
42
  customFeatures?: AnyDebugFeature[];
35
43
  enabled?: boolean;
44
+ logStorage?: StorageAdapter;
45
+ maxLogSessions?: number;
36
46
  }
37
47
 
48
+ type EnvironmentFeatureConfig = Parameters<typeof createEnvironmentFeature>[0];
49
+ type BuiltInFeatureCreator = (config?: unknown, runtime?: LogRuntimeContext) => AnyDebugFeature;
50
+
38
51
  /** Registry mapping feature names to creator functions */
39
- // Config param requires `any` — each factory accepts a different config type.
40
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
41
- const featureRegistry: Record<BuiltInFeatureName, (config?: any) => AnyDebugFeature> = {
42
- network: createNetworkFeature,
43
- console: createConsoleLogFeature,
44
- zustand: createZustandLogFeature,
45
- navigation: createNavigationLogFeature,
46
- track: createTrackFeature,
47
- environment: createEnvironmentFeature,
48
- clipboard: createClipboardFeature,
49
- devConnect: createDevConnectFeature,
52
+ const featureRegistry: Record<BuiltInFeatureName, BuiltInFeatureCreator> = {
53
+ network: (config, runtime) => createNetworkFeature(config as NetworkFeatureConfig | undefined, runtime),
54
+ console: (config, runtime) => createConsoleLogFeature(config as ConsoleFeatureConfig | undefined, runtime),
55
+ zustand: (config) => createZustandLogFeature(config as ZustandFeatureConfig | undefined),
56
+ navigation: (config) => createNavigationLogFeature(config as NavigationFeatureConfig | undefined),
57
+ track: (config, runtime) => createTrackFeature(config as TrackFeatureConfig | undefined, runtime),
58
+ environment: (config) => createEnvironmentFeature(config as EnvironmentFeatureConfig | undefined),
59
+ clipboard: () => createClipboardFeature(),
60
+ devConnect: () => createDevConnectFeature(),
61
+ sessionHistory: (_config, runtime) => createSessionHistoryFeature(runtime),
50
62
  };
51
63
 
52
64
  const DEFAULT_FEATURES: BuiltInFeatureName[] = [
@@ -57,14 +69,17 @@ const DEFAULT_FEATURES: BuiltInFeatureName[] = [
57
69
  'track',
58
70
  'clipboard',
59
71
  'devConnect',
72
+ 'sessionHistory',
60
73
  ];
61
74
 
62
- function resolveFeatureConfigs(configs: FeatureConfigs): AnyDebugFeature[] {
75
+ function resolveFeatureConfigs(configs: FeatureConfigs, runtime: LogRuntimeContext): AnyDebugFeature[] {
63
76
  const features: AnyDebugFeature[] = [];
64
77
  const entries = Object.entries(configs) as [BuiltInFeatureName, unknown][];
65
78
 
66
79
  for (const [name, config] of entries) {
67
- if (config === false) continue;
80
+ if (config === false) {
81
+ continue;
82
+ }
68
83
 
69
84
  const creator = featureRegistry[name];
70
85
  if (!creator) {
@@ -73,17 +88,17 @@ function resolveFeatureConfigs(configs: FeatureConfigs): AnyDebugFeature[] {
73
88
  }
74
89
 
75
90
  if (config === true || config === undefined) {
76
- features.push(creator());
91
+ features.push(creator(undefined, runtime));
77
92
  } else if (typeof config === 'object') {
78
- features.push(creator(config as Record<string, unknown>));
93
+ features.push(creator(config as Record<string, unknown>, runtime));
79
94
  }
80
95
  }
81
96
 
82
97
  return features;
83
98
  }
84
99
 
85
- function resolveDefaultFeatures(): AnyDebugFeature[] {
86
- return DEFAULT_FEATURES.map((name) => featureRegistry[name]!());
100
+ function resolveDefaultFeatures(runtime: LogRuntimeContext): AnyDebugFeature[] {
101
+ return DEFAULT_FEATURES.map((name) => featureRegistry[name]!(undefined, runtime));
87
102
  }
88
103
 
89
104
  function appendCustomFeatures(
@@ -123,23 +138,32 @@ export async function initializeDebugToolkit(
123
138
  }
124
139
  }
125
140
 
126
- const resolvedBuiltInFeatures = options?.features
127
- ? resolveFeatureConfigs(options.features)
128
- : resolveDefaultFeatures();
129
- const resolvedFeatures = appendCustomFeatures(
130
- resolvedBuiltInFeatures,
131
- options?.customFeatures,
132
- );
133
-
134
141
  try {
135
142
  DebugToolkit.setEnabled(enabled);
136
143
 
137
144
  if (!enabled) {
145
+ daemonClient.clearSessionProvider();
138
146
  DebugToolkit.reset();
139
147
  return DebugToolkit;
140
148
  }
141
149
 
150
+ const runtime = createLogRuntime({
151
+ logStorage: options?.logStorage,
152
+ maxSessions: options?.maxLogSessions,
153
+ });
154
+ setDefaultLogRuntime(runtime);
155
+ daemonClient.setSessionProvider(() => runtime.sessionManager.getCurrentSession());
156
+
157
+ const resolvedBuiltInFeatures = options?.features
158
+ ? resolveFeatureConfigs(options.features, runtime)
159
+ : resolveDefaultFeatures(runtime);
160
+ const resolvedFeatures = appendCustomFeatures(
161
+ resolvedBuiltInFeatures,
162
+ options?.customFeatures,
163
+ );
164
+
142
165
  DebugToolkit.replaceFeatures(resolvedFeatures);
166
+ runtime.sessionManager.initialize().catch(() => {});
143
167
 
144
168
  daemonClient.setEndpointDetector((url) => {
145
169
  addToBlacklist(url);
@@ -7,22 +7,9 @@ import { JsonView } from '../../ui/shared/JsonView';
7
7
  import { CopyButton } from '../../ui/shared/CopyButton';
8
8
  import { LogListScreen } from '../../ui/shared/LogListScreen';
9
9
  import { fmt } from '../../utils/copyToComputer';
10
+ import { LEVEL_COLORS, LEVEL_ICONS } from '../../constants/logLevels';
10
11
  import type { ConsoleLogEntry, DebugFeatureRenderProps } from '../../types';
11
12
 
12
- const LEVEL_COLORS: Record<string, string> = {
13
- log: '#8E8E93',
14
- info: '#007AFF',
15
- warn: '#FF9500',
16
- error: '#FF3B30',
17
- };
18
-
19
- const LEVEL_ICONS: Record<string, string> = {
20
- log: '●',
21
- info: 'ℹ',
22
- warn: '⚠',
23
- error: '✕',
24
- };
25
-
26
13
  export const ConsoleLogTab: React.FC<DebugFeatureRenderProps<ConsoleLogEntry[]>> = React.memo(({ snapshot }) => (
27
14
  <LogListScreen
28
15
  data={snapshot}
@@ -1,7 +1,7 @@
1
1
  import { ConsoleLogTab } from './ConsoleLogTab';
2
2
  import type { ConsoleLogEntry, DebugFeature } from '../../types';
3
3
  import { createPersistedObservableStore } from '../../utils/createPersistedObservableStore';
4
- import { KEYS } from '../../utils/debugPreferences';
4
+ import { getDefaultLogRuntime, type LogRuntimeContext } from '../../utils/logRuntime';
5
5
 
6
6
  const LEVELS: ConsoleLogEntry['level'][] = ['log', 'info', 'warn', 'error'];
7
7
 
@@ -13,7 +13,9 @@ const consoleCapture = (() => {
13
13
 
14
14
  function stop(): void {
15
15
  refCount = Math.max(0, refCount - 1);
16
- if (refCount > 0) return;
16
+ if (refCount > 0) {
17
+ return;
18
+ }
17
19
 
18
20
  LEVELS.forEach((level) => {
19
21
  const original = originalMethods[level];
@@ -78,10 +80,14 @@ export interface ConsoleFeatureConfig {
78
80
  maxLogs?: number;
79
81
  }
80
82
 
81
- export const createConsoleLogFeature = (config?: ConsoleFeatureConfig): DebugFeature<ConsoleLogEntry[]> => {
83
+ export const createConsoleLogFeature = (
84
+ config?: ConsoleFeatureConfig,
85
+ runtime: LogRuntimeContext = getDefaultLogRuntime(),
86
+ ): DebugFeature<ConsoleLogEntry[]> => {
82
87
  const maxLogs = config?.maxLogs ?? DEFAULT_MAX_LOGS;
83
88
  const logStore = createPersistedObservableStore<ConsoleLogEntry>({
84
- storageKey: KEYS.consoleLogs,
89
+ storage: runtime.logStorage,
90
+ storageKey: runtime.sessionManager.getLogStorageKey('console_logs'),
85
91
  maxPersist: 50,
86
92
  });
87
93
  let initialized = false;
@@ -92,7 +98,9 @@ export const createConsoleLogFeature = (config?: ConsoleFeatureConfig): DebugFea
92
98
  label: 'Console',
93
99
  renderContent: ConsoleLogTab,
94
100
  setup: () => {
95
- if (initialized) return;
101
+ if (initialized) {
102
+ return;
103
+ }
96
104
 
97
105
  stopCapture = consoleCapture.start((entry) => {
98
106
  logStore.push({ ...entry, id: logStore.nextId() }, maxLogs);
@@ -100,13 +108,15 @@ export const createConsoleLogFeature = (config?: ConsoleFeatureConfig): DebugFea
100
108
  initialized = true;
101
109
  },
102
110
  getSnapshot: () => logStore.getData(),
103
- clear: () => { logStore.clear(); },
111
+ clear: () => { logStore.clearPersisted(); },
104
112
  cleanup: () => {
105
- if (!initialized) return;
113
+ if (!initialized) {
114
+ return;
115
+ }
106
116
 
107
117
  stopCapture?.();
108
118
  stopCapture = null;
109
- logStore.clear();
119
+ logStore.dispose();
110
120
  initialized = false;
111
121
  },
112
122
  subscribe: (listener) => logStore.subscribe(listener),