@gracker/smartperfetto 1.0.19 → 1.0.21

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 (203) hide show
  1. package/dist/agent/config/domainManifest.d.ts +5 -3
  2. package/dist/agent/config/domainManifest.d.ts.map +1 -1
  3. package/dist/agent/config/domainManifest.js +120 -5
  4. package/dist/agent/config/domainManifest.js.map +1 -1
  5. package/dist/agent/core/conclusionContract.d.ts +1 -0
  6. package/dist/agent/core/conclusionContract.d.ts.map +1 -1
  7. package/dist/agent/core/orchestratorTypes.d.ts +5 -0
  8. package/dist/agent/core/orchestratorTypes.d.ts.map +1 -1
  9. package/dist/agent/core/orchestratorTypes.js.map +1 -1
  10. package/dist/agent/scene/buildSmartChatReport.d.ts +13 -0
  11. package/dist/agent/scene/buildSmartChatReport.d.ts.map +1 -0
  12. package/dist/agent/scene/buildSmartChatReport.js +333 -0
  13. package/dist/agent/scene/buildSmartChatReport.js.map +1 -0
  14. package/dist/agent/scene/sceneAnalysisJobRunner.d.ts +8 -4
  15. package/dist/agent/scene/sceneAnalysisJobRunner.d.ts.map +1 -1
  16. package/dist/agent/scene/sceneAnalysisJobRunner.js +78 -3
  17. package/dist/agent/scene/sceneAnalysisJobRunner.js.map +1 -1
  18. package/dist/agent/scene/sceneIntervalBuilder.d.ts +14 -5
  19. package/dist/agent/scene/sceneIntervalBuilder.d.ts.map +1 -1
  20. package/dist/agent/scene/sceneIntervalBuilder.js +578 -1
  21. package/dist/agent/scene/sceneIntervalBuilder.js.map +1 -1
  22. package/dist/agent/scene/sceneStage1Verifier.d.ts +8 -0
  23. package/dist/agent/scene/sceneStage1Verifier.d.ts.map +1 -0
  24. package/dist/agent/scene/sceneStage1Verifier.js +245 -0
  25. package/dist/agent/scene/sceneStage1Verifier.js.map +1 -0
  26. package/dist/agent/scene/sceneStoryService.d.ts +20 -2
  27. package/dist/agent/scene/sceneStoryService.d.ts.map +1 -1
  28. package/dist/agent/scene/sceneStoryService.js +238 -25
  29. package/dist/agent/scene/sceneStoryService.js.map +1 -1
  30. package/dist/agent/scene/smartCancelBridge.d.ts +13 -0
  31. package/dist/agent/scene/smartCancelBridge.d.ts.map +1 -0
  32. package/dist/agent/scene/smartCancelBridge.js +44 -0
  33. package/dist/agent/scene/smartCancelBridge.js.map +1 -0
  34. package/dist/agent/scene/smartDeepDiveDispatch.d.ts +15 -0
  35. package/dist/agent/scene/smartDeepDiveDispatch.d.ts.map +1 -0
  36. package/dist/agent/scene/smartDeepDiveDispatch.js +170 -0
  37. package/dist/agent/scene/smartDeepDiveDispatch.js.map +1 -0
  38. package/dist/agent/scene/types.d.ts +97 -6
  39. package/dist/agent/scene/types.d.ts.map +1 -1
  40. package/dist/agent/tools/frameAnalyzer.d.ts.map +1 -1
  41. package/dist/agent/tools/frameAnalyzer.js +1 -0
  42. package/dist/agent/tools/frameAnalyzer.js.map +1 -1
  43. package/dist/agent/types.d.ts +1 -1
  44. package/dist/agent/types.d.ts.map +1 -1
  45. package/dist/agent/types.js.map +1 -1
  46. package/dist/agentOpenAI/openAiRuntime.d.ts +24 -0
  47. package/dist/agentOpenAI/openAiRuntime.d.ts.map +1 -1
  48. package/dist/agentOpenAI/openAiRuntime.js +159 -191
  49. package/dist/agentOpenAI/openAiRuntime.js.map +1 -1
  50. package/dist/agentRuntime/index.d.ts +1 -0
  51. package/dist/agentRuntime/index.d.ts.map +1 -1
  52. package/dist/agentRuntime/index.js +16 -1
  53. package/dist/agentRuntime/index.js.map +1 -1
  54. package/dist/agentRuntime/runtimeCommon.d.ts +34 -0
  55. package/dist/agentRuntime/runtimeCommon.d.ts.map +1 -0
  56. package/dist/agentRuntime/runtimeCommon.js +231 -0
  57. package/dist/agentRuntime/runtimeCommon.js.map +1 -0
  58. package/dist/agentv3/claudeConfig.d.ts +6 -2
  59. package/dist/agentv3/claudeConfig.d.ts.map +1 -1
  60. package/dist/agentv3/claudeConfig.js +50 -48
  61. package/dist/agentv3/claudeConfig.js.map +1 -1
  62. package/dist/agentv3/claudeMcpServer.d.ts.map +1 -1
  63. package/dist/agentv3/claudeMcpServer.js +74 -66
  64. package/dist/agentv3/claudeMcpServer.js.map +1 -1
  65. package/dist/agentv3/claudeRuntime.d.ts +18 -2
  66. package/dist/agentv3/claudeRuntime.d.ts.map +1 -1
  67. package/dist/agentv3/claudeRuntime.js +198 -265
  68. package/dist/agentv3/claudeRuntime.js.map +1 -1
  69. package/dist/agentv3/claudeSseBridge.js +1 -1
  70. package/dist/agentv3/claudeSseBridge.js.map +1 -1
  71. package/dist/agentv3/claudeVerifier.d.ts.map +1 -1
  72. package/dist/agentv3/claudeVerifier.js +3 -6
  73. package/dist/agentv3/claudeVerifier.js.map +1 -1
  74. package/dist/agentv3/strategyLoader.d.ts +3 -0
  75. package/dist/agentv3/strategyLoader.d.ts.map +1 -1
  76. package/dist/agentv3/strategyLoader.js +17 -4
  77. package/dist/agentv3/strategyLoader.js.map +1 -1
  78. package/dist/cli-user/bin.js +83 -2
  79. package/dist/cli-user/bin.js.map +1 -1
  80. package/dist/cli-user/commands/analyze.d.ts +2 -0
  81. package/dist/cli-user/commands/analyze.d.ts.map +1 -1
  82. package/dist/cli-user/commands/analyze.js +1 -0
  83. package/dist/cli-user/commands/analyze.js.map +1 -1
  84. package/dist/cli-user/commands/capture.d.ts +37 -2
  85. package/dist/cli-user/commands/capture.d.ts.map +1 -1
  86. package/dist/cli-user/commands/capture.js +184 -95
  87. package/dist/cli-user/commands/capture.js.map +1 -1
  88. package/dist/cli-user/commands/compare.d.ts +2 -0
  89. package/dist/cli-user/commands/compare.d.ts.map +1 -1
  90. package/dist/cli-user/commands/compare.js +1 -0
  91. package/dist/cli-user/commands/compare.js.map +1 -1
  92. package/dist/cli-user/commands/doctor.js +4 -0
  93. package/dist/cli-user/commands/doctor.js.map +1 -1
  94. package/dist/cli-user/services/androidCapture.d.ts +59 -0
  95. package/dist/cli-user/services/androidCapture.d.ts.map +1 -0
  96. package/dist/cli-user/services/androidCapture.js +375 -0
  97. package/dist/cli-user/services/androidCapture.js.map +1 -0
  98. package/dist/cli-user/services/captureConfig.d.ts +38 -0
  99. package/dist/cli-user/services/captureConfig.d.ts.map +1 -0
  100. package/dist/cli-user/services/captureConfig.js +434 -0
  101. package/dist/cli-user/services/captureConfig.js.map +1 -0
  102. package/dist/cli-user/services/captureTools.d.ts +11 -0
  103. package/dist/cli-user/services/captureTools.d.ts.map +1 -0
  104. package/dist/cli-user/services/captureTools.js +247 -0
  105. package/dist/cli-user/services/captureTools.js.map +1 -0
  106. package/dist/cli-user/services/cliAnalyzeService.d.ts +2 -0
  107. package/dist/cli-user/services/cliAnalyzeService.d.ts.map +1 -1
  108. package/dist/cli-user/services/cliAnalyzeService.js +1 -0
  109. package/dist/cli-user/services/cliAnalyzeService.js.map +1 -1
  110. package/dist/cli-user/services/runtimeGuard.d.ts +10 -0
  111. package/dist/cli-user/services/runtimeGuard.d.ts.map +1 -1
  112. package/dist/cli-user/services/runtimeGuard.js +48 -0
  113. package/dist/cli-user/services/runtimeGuard.js.map +1 -1
  114. package/dist/cli-user/services/turnRunner.d.ts +3 -0
  115. package/dist/cli-user/services/turnRunner.d.ts.map +1 -1
  116. package/dist/cli-user/services/turnRunner.js +4 -0
  117. package/dist/cli-user/services/turnRunner.js.map +1 -1
  118. package/dist/cli-user/types.d.ts +57 -0
  119. package/dist/cli-user/types.d.ts.map +1 -1
  120. package/dist/config/index.d.ts +12 -0
  121. package/dist/config/index.d.ts.map +1 -1
  122. package/dist/config/index.js +6 -0
  123. package/dist/config/index.js.map +1 -1
  124. package/dist/perfetto-recording-tools-pin.env +24 -0
  125. package/dist/routes/agent/finalizeAgentDrivenSession.d.ts +67 -0
  126. package/dist/routes/agent/finalizeAgentDrivenSession.d.ts.map +1 -0
  127. package/dist/routes/agent/finalizeAgentDrivenSession.js +103 -0
  128. package/dist/routes/agent/finalizeAgentDrivenSession.js.map +1 -0
  129. package/dist/routes/agent/normalizeAnalyzeOptions.d.ts +42 -0
  130. package/dist/routes/agent/normalizeAnalyzeOptions.d.ts.map +1 -0
  131. package/dist/routes/agent/normalizeAnalyzeOptions.js +185 -0
  132. package/dist/routes/agent/normalizeAnalyzeOptions.js.map +1 -0
  133. package/dist/routes/agentRoutes.d.ts.map +1 -1
  134. package/dist/routes/agentRoutes.js +285 -125
  135. package/dist/routes/agentRoutes.js.map +1 -1
  136. package/dist/scripts/verifyAgentSseScrolling.js +131 -8
  137. package/dist/scripts/verifyAgentSseScrolling.js.map +1 -1
  138. package/dist/services/agentResultNormalizer.d.ts.map +1 -1
  139. package/dist/services/agentResultNormalizer.js +32 -4
  140. package/dist/services/agentResultNormalizer.js.map +1 -1
  141. package/dist/services/evidence/evidenceContractBuilder.d.ts.map +1 -1
  142. package/dist/services/evidence/evidenceContractBuilder.js +17 -3
  143. package/dist/services/evidence/evidenceContractBuilder.js.map +1 -1
  144. package/dist/services/perfettoSqlSkill.d.ts.map +1 -1
  145. package/dist/services/perfettoSqlSkill.js +1 -0
  146. package/dist/services/perfettoSqlSkill.js.map +1 -1
  147. package/dist/services/providerManager/connectionTester.d.ts.map +1 -1
  148. package/dist/services/providerManager/connectionTester.js +4 -68
  149. package/dist/services/providerManager/connectionTester.js.map +1 -1
  150. package/dist/services/providerManager/index.d.ts +1 -0
  151. package/dist/services/providerManager/index.d.ts.map +1 -1
  152. package/dist/services/providerManager/index.js +8 -1
  153. package/dist/services/providerManager/index.js.map +1 -1
  154. package/dist/services/providerManager/providerService.d.ts.map +1 -1
  155. package/dist/services/providerManager/providerService.js +37 -106
  156. package/dist/services/providerManager/providerService.js.map +1 -1
  157. package/dist/services/providerManager/providerSnapshot.d.ts.map +1 -1
  158. package/dist/services/providerManager/providerSnapshot.js +13 -12
  159. package/dist/services/providerManager/providerSnapshot.js.map +1 -1
  160. package/dist/services/providerManager/runtimeCapabilities.d.ts +9 -0
  161. package/dist/services/providerManager/runtimeCapabilities.d.ts.map +1 -0
  162. package/dist/services/providerManager/runtimeCapabilities.js +105 -0
  163. package/dist/services/providerManager/runtimeCapabilities.js.map +1 -0
  164. package/dist/services/sceneReport/sceneJobArtifactStore.d.ts +22 -0
  165. package/dist/services/sceneReport/sceneJobArtifactStore.d.ts.map +1 -0
  166. package/dist/services/sceneReport/sceneJobArtifactStore.js +65 -0
  167. package/dist/services/sceneReport/sceneJobArtifactStore.js.map +1 -0
  168. package/dist/services/sceneReport/sceneReportMemoryCache.d.ts +5 -3
  169. package/dist/services/sceneReport/sceneReportMemoryCache.d.ts.map +1 -1
  170. package/dist/services/sceneReport/sceneReportMemoryCache.js +15 -10
  171. package/dist/services/sceneReport/sceneReportMemoryCache.js.map +1 -1
  172. package/dist/services/sceneReport/sceneReportStore.d.ts +9 -4
  173. package/dist/services/sceneReport/sceneReportStore.d.ts.map +1 -1
  174. package/dist/services/sceneReport/sceneReportStore.js +27 -7
  175. package/dist/services/sceneReport/sceneReportStore.js.map +1 -1
  176. package/dist/services/skillEngine/skillExecutor.d.ts +1 -0
  177. package/dist/services/skillEngine/skillExecutor.d.ts.map +1 -1
  178. package/dist/services/skillEngine/skillExecutor.js +64 -12
  179. package/dist/services/skillEngine/skillExecutor.js.map +1 -1
  180. package/dist/services/traceProcessor/sqlSemaphore.d.ts +16 -0
  181. package/dist/services/traceProcessor/sqlSemaphore.d.ts.map +1 -0
  182. package/dist/services/traceProcessor/sqlSemaphore.js +63 -0
  183. package/dist/services/traceProcessor/sqlSemaphore.js.map +1 -0
  184. package/dist/types/dataContract.d.ts +1 -1
  185. package/dist/types/dataContract.d.ts.map +1 -1
  186. package/dist/types/dataContract.js +2 -0
  187. package/dist/types/dataContract.js.map +1 -1
  188. package/package.json +3 -3
  189. package/prebuilts/android-platform-tools/README.md +13 -0
  190. package/prebuilts/perfetto-recording-tools/README.md +17 -0
  191. package/skills/README.md +13 -5
  192. package/skills/atomic/cpu_topology_detection.skill.yaml +105 -159
  193. package/skills/atomic/cpu_topology_view.skill.yaml +2 -0
  194. package/skills/composite/device_state_snapshot.skill.yaml +204 -0
  195. package/skills/composite/scene_reconstruction.skill.yaml +5 -1
  196. package/strategies/prompt-openai-final-report-continuation-en.template.md +3 -1
  197. package/strategies/prompt-openai-final-report-continuation-zh.template.md +3 -1
  198. package/strategies/prompt-output-format.template.md +1 -1
  199. package/strategies/scene-reconstruction-verifier.template.md +18 -0
  200. package/strategies/scrolling.strategy.md +5 -1
  201. package/strategies/smart.strategy.md +53 -0
  202. package/strategies/startup.strategy.md +4 -4
  203. package/skills/atomic/device_state_snapshot.skill.yaml +0 -171
@@ -0,0 +1,53 @@
1
+ <!--
2
+ SPDX-License-Identifier: AGPL-3.0-or-later
3
+ Copyright (C) 2024-2026 Gracker (Chris)
4
+ This file is part of SmartPerfetto. See LICENSE for details.
5
+ -->
6
+ ---
7
+ scene: smart
8
+ strategy_kind: contract_only
9
+ priority: 5
10
+ effort: high
11
+ keywords:
12
+ - smart
13
+ - 智能
14
+ - mixed trace
15
+ - 场景混合
16
+ required_capabilities: []
17
+ optional_capabilities: []
18
+ final_report_contract:
19
+ required_sections:
20
+ - id: scene_timeline
21
+ label: 场景时间线
22
+ description: 按时间顺序列出 trace 中检测到的关键用户操作和设备状态场景。
23
+ pattern_groups:
24
+ - ["场景时间线", "timeline", "时间线"]
25
+ - ["冷启动", "热启动", "滑动", "点击", "返回", "Home", "亮屏", "熄屏", "ANR"]
26
+ - id: per_scene_summary
27
+ label: 分场景摘要
28
+ description: 对每个被深度分析的场景给出关键指标、结论和证据引用。
29
+ pattern_groups:
30
+ - ["分场景", "逐场景", "per-scene"]
31
+ - ["证据", "指标", "耗时", "延迟", "帧"]
32
+ - id: cross_scene_narrative
33
+ label: 跨场景叙事
34
+ description: 总结多个场景之间的关联、共同瓶颈或前后影响。
35
+ pattern_groups:
36
+ - ["跨场景", "整体", "关联", "链路"]
37
+ - ["原因", "影响", "共同", "瓶颈"]
38
+ - id: bottleneck_ranking
39
+ label: 瓶颈排序
40
+ description: 按影响范围、严重度和可行动性给出优化优先级。
41
+ pattern_groups:
42
+ - ["瓶颈排序", "优先级", "ranking"]
43
+ - ["P0", "P1", "优先", "建议"]
44
+ ---
45
+
46
+ # Smart Analysis Contract
47
+
48
+ This strategy is intentionally contract-only. It must not be injected as a
49
+ normal scene strategy and must not participate in scene classification.
50
+
51
+ Smart Analysis Mode combines Scene Story detection with profile-specific
52
+ deep-dive routes, then projects the resulting scene report into a readable chat
53
+ summary and the standard HTML report chain.
@@ -50,7 +50,7 @@ final_report_contract:
50
50
  label: 阶段耗时分解
51
51
  description: '包含 startup_detail / phase breakdown 口径,并优先使用 self_ms 解释阶段贡献。'
52
52
  pattern_groups:
53
- - ['阶段耗时', '阶段分解', 'phase\s+breakdown', 'startup_detail']
53
+ - ['阶段耗时', '阶段分解', 'phase\s+breakdown', 'startup_detail', '根因分析树', 'Phase\s*\d+']
54
54
  - ['self_ms', 'dur_ms', '耗时', '\d+(?:\.\d+)?\s*ms']
55
55
  - id: root_cause_references
56
56
  label: 根因编号引用
@@ -61,8 +61,8 @@ final_report_contract:
61
61
  label: App/系统分层建议
62
62
  description: '优化建议必须区分 App 层和系统/平台/ROM 层。'
63
63
  pattern_groups:
64
- - ['App', '应用层', 'App\s+layer']
65
- - ['系统/平台层', '系统层', '平台层', 'ROM', 'System/Platform', 'platform\s+layer']
64
+ - ['App\s*层', '应用\s*层', 'App\s+layer']
65
+ - ['系统\s*/\s*平台\s*层', '系统\s*层', '平台\s*层', 'ROM\s*层', 'System/Platform', 'platform\s+layer']
66
66
 
67
67
  phase_hints:
68
68
  - id: detail_breakdown
@@ -644,7 +644,7 @@ TTID 和 TTFD 是两个不同的指标,必须区分:
644
644
  - **数据不足时**:标注"数据不足,无法归类"而非强行贴标签
645
645
  - **纯排除项**:编号可选(如"Binder 阻塞(B6) < 10ms ✓")
646
646
 
647
- 3. **根因分析树**:层级式展示启动耗时分解,**必须体现嵌套关系、使用 self_ms、标注根因编号**
647
+ 3. **根因分析树**:层级式展示启动耗时分解,**必须体现嵌套关系、使用 self_ms、标注根因编号**。树可以保持紧凑;不要让长树状图挤掉后面的 App/系统分层建议。
648
648
  ```
649
649
  启动总耗时 XXms
650
650
  ├── [Phase 1] bindApplication = XXms wall
@@ -1,171 +0,0 @@
1
- # SPDX-License-Identifier: AGPL-3.0-or-later
2
- # Copyright (C) 2024-2026 Gracker (Chris)
3
- # This file is part of SmartPerfetto. See LICENSE for details.
4
-
5
- # =============================================================================
6
- # 设备环境状态快照(原子 Skill)
7
- # =============================================================================
8
- # 采集 trace 期间的设备环境信息:屏幕状态、电量、温度、CPU 频率、内存压力等。
9
-
10
- name: device_state_snapshot
11
- version: "1.0"
12
- type: atomic
13
- category: system_context
14
- tier: B
15
-
16
- meta:
17
- display_name: "设备环境状态快照"
18
- description: "采集 trace 期间的设备环境信息(屏幕、电量、温度、CPU、内存等)"
19
- icon: "devices"
20
- tags: [device, state, environment, context, atomic]
21
-
22
- prerequisites:
23
- required_tables:
24
- - counter
25
- - counter_track
26
-
27
- inputs:
28
- - name: start_ts
29
- type: timestamp
30
- required: false
31
- description: "分析起始时间戳(ns)"
32
- - name: end_ts
33
- type: timestamp
34
- required: false
35
- description: "分析结束时间戳(ns)"
36
-
37
- display:
38
- level: summary
39
- layer: overview
40
- title: "设备环境状态"
41
- columns:
42
- - name: metric
43
- label: "指标"
44
- type: string
45
- - name: value
46
- label: "值"
47
- type: string
48
- - name: ts
49
- label: "时间戳"
50
- type: timestamp
51
- unit: ns
52
- clickAction: navigate_timeline
53
-
54
- sql: |
55
- WITH trace_bounds AS (
56
- SELECT
57
- COALESCE(${start_ts}, (SELECT MIN(ts) FROM slice)) as t_start,
58
- COALESCE(${end_ts}, (SELECT MAX(ts + dur) FROM slice)) as t_end
59
- ),
60
- screen_state AS (
61
- SELECT
62
- 'screen_state' as metric,
63
- CASE WHEN c.value > 0 THEN 'ON' ELSE 'OFF' END as value,
64
- c.ts as ts
65
- FROM counter c
66
- JOIN counter_track ct ON c.track_id = ct.id
67
- WHERE ct.name GLOB '*ScreenState*' OR ct.name GLOB '*screen_state*'
68
- ORDER BY c.ts DESC
69
- LIMIT 1
70
- ),
71
- battery_info AS (
72
- SELECT
73
- 'battery_level' as metric,
74
- CAST(c.value AS TEXT) as value,
75
- c.ts as ts
76
- FROM counter c
77
- JOIN counter_track ct ON c.track_id = ct.id
78
- WHERE ct.name GLOB '*battery_level*' OR ct.name GLOB '*BatteryLevel*'
79
- ORDER BY c.ts DESC
80
- LIMIT 1
81
- ),
82
- charging_info AS (
83
- SELECT
84
- 'charging_state' as metric,
85
- CASE WHEN c.value > 0 THEN 'CHARGING' ELSE 'NOT_CHARGING' END as value,
86
- c.ts as ts
87
- FROM counter c
88
- JOIN counter_track ct ON c.track_id = ct.id
89
- WHERE ct.name GLOB '*battery_status*' OR ct.name GLOB '*charging*' OR ct.name GLOB '*BatteryStatus*'
90
- ORDER BY c.ts DESC
91
- LIMIT 1
92
- ),
93
- thermal_info AS (
94
- SELECT
95
- 'thermal_zone' as metric,
96
- ct.name || ': ' || CAST(ROUND(MAX(c.value) / 1000.0, 1) AS TEXT) || '°C' as value,
97
- MAX(c.ts) as ts
98
- FROM counter c
99
- JOIN counter_track ct ON c.track_id = ct.id
100
- CROSS JOIN trace_bounds tb
101
- WHERE (ct.name GLOB '*thermal_zone*' OR ct.name GLOB '*Temperature*')
102
- AND c.ts >= tb.t_start AND c.ts <= tb.t_end
103
- GROUP BY ct.name
104
- ORDER BY MAX(c.value) DESC
105
- LIMIT 5
106
- ),
107
- cpu_freq_summary AS (
108
- SELECT
109
- 'cpu_max_freq' as metric,
110
- 'CPU' || ct.name || ': ' || CAST(ROUND(MAX(c.value) / 1e6, 2) AS TEXT) || 'GHz' as value,
111
- MAX(c.ts) as ts
112
- FROM counter c
113
- JOIN cpu_counter_track ct ON c.track_id = ct.id
114
- CROSS JOIN trace_bounds tb
115
- WHERE ct.name = 'cpufreq'
116
- AND c.ts >= tb.t_start AND c.ts <= tb.t_end
117
- GROUP BY ct.cpu
118
- ORDER BY ct.cpu
119
- ),
120
- memory_info AS (
121
- SELECT
122
- 'memory_pressure' as metric,
123
- CAST(ROUND(MAX(c.value), 0) AS TEXT) as value,
124
- MAX(c.ts) as ts
125
- FROM counter c
126
- JOIN counter_track ct ON c.track_id = ct.id
127
- CROSS JOIN trace_bounds tb
128
- WHERE (ct.name GLOB '*mem.*pressure*' OR ct.name GLOB '*MemFree*' OR ct.name GLOB '*MemAvailable*')
129
- AND c.ts >= tb.t_start AND c.ts <= tb.t_end
130
- ),
131
- process_count AS (
132
- SELECT
133
- 'active_processes' as metric,
134
- CAST(COUNT(DISTINCT p.upid) AS TEXT) as value,
135
- NULL as ts
136
- FROM process p
137
- JOIN thread t ON t.upid = p.upid
138
- JOIN thread_state ts_tbl ON ts_tbl.utid = t.utid
139
- CROSS JOIN trace_bounds tb
140
- WHERE ts_tbl.ts >= tb.t_start AND ts_tbl.ts <= tb.t_end
141
- AND ts_tbl.state = 'Running'
142
- ),
143
- oom_adj AS (
144
- SELECT
145
- 'foreground_apps' as metric,
146
- GROUP_CONCAT(p.name, ', ') as value,
147
- NULL as ts
148
- FROM (
149
- SELECT DISTINCT p.name, p.upid
150
- FROM counter c
151
- JOIN process_counter_track pct ON c.track_id = pct.id
152
- JOIN process p ON p.upid = pct.upid
153
- CROSS JOIN trace_bounds tb
154
- WHERE pct.name = 'oom_score_adj'
155
- AND c.value <= 0
156
- AND c.ts >= tb.t_start AND c.ts <= tb.t_end
157
- AND p.name IS NOT NULL AND p.name != ''
158
- LIMIT 10
159
- ) p
160
- )
161
- SELECT metric, value, printf('%d', ts) as ts FROM screen_state
162
- UNION ALL SELECT metric, value, printf('%d', ts) as ts FROM battery_info
163
- UNION ALL SELECT metric, value, printf('%d', ts) as ts FROM charging_info
164
- UNION ALL SELECT metric, value, printf('%d', ts) as ts FROM thermal_info
165
- UNION ALL SELECT metric, value, printf('%d', ts) as ts FROM cpu_freq_summary
166
- UNION ALL SELECT metric, value, printf('%d', ts) as ts FROM memory_info
167
- UNION ALL SELECT metric, value, printf('%d', ts) as ts FROM process_count
168
- UNION ALL SELECT metric, value, printf('%d', ts) as ts FROM oom_adj
169
-
170
- output:
171
- format: structured