@gracker/smartperfetto 1.0.14 → 1.0.16

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 (307) hide show
  1. package/.env.example +16 -8
  2. package/dist/agent/agents/base/baseAgent.d.ts.map +1 -1
  3. package/dist/agent/agents/base/baseAgent.js +5 -1
  4. package/dist/agent/agents/base/baseAgent.js.map +1 -1
  5. package/dist/agent/context/enhancedSessionContext.d.ts +5 -0
  6. package/dist/agent/context/enhancedSessionContext.d.ts.map +1 -1
  7. package/dist/agent/context/enhancedSessionContext.js +13 -0
  8. package/dist/agent/context/enhancedSessionContext.js.map +1 -1
  9. package/dist/agent/core/conclusionContract.d.ts +16 -1
  10. package/dist/agent/core/conclusionContract.d.ts.map +1 -1
  11. package/dist/agent/core/conclusionGenerator.d.ts.map +1 -1
  12. package/dist/agent/core/conclusionGenerator.js +90 -7
  13. package/dist/agent/core/conclusionGenerator.js.map +1 -1
  14. package/dist/agent/core/executors/directSkillExecutor.d.ts.map +1 -1
  15. package/dist/agent/core/executors/directSkillExecutor.js +6 -12
  16. package/dist/agent/core/executors/directSkillExecutor.js.map +1 -1
  17. package/dist/agent/core/orchestratorTypes.d.ts +16 -0
  18. package/dist/agent/core/orchestratorTypes.d.ts.map +1 -1
  19. package/dist/agent/core/orchestratorTypes.js.map +1 -1
  20. package/dist/agent/experts/crossDomain/moduleExpertInvoker.d.ts.map +1 -1
  21. package/dist/agent/experts/crossDomain/moduleExpertInvoker.js +4 -1
  22. package/dist/agent/experts/crossDomain/moduleExpertInvoker.js.map +1 -1
  23. package/dist/agent/scene/sceneStage1Runner.d.ts +1 -1
  24. package/dist/agent/scene/sceneStage1Runner.d.ts.map +1 -1
  25. package/dist/agent/scene/sceneStage1Runner.js +1 -1
  26. package/dist/agent/scene/sceneStage1Runner.js.map +1 -1
  27. package/dist/agent/scene/sceneStoryService.d.ts +1 -1
  28. package/dist/agent/scene/sceneStoryService.d.ts.map +1 -1
  29. package/dist/agent/scene/sceneStoryService.js +4 -1
  30. package/dist/agent/scene/sceneStoryService.js.map +1 -1
  31. package/dist/agent/types/agentProtocol.d.ts.map +1 -1
  32. package/dist/agent/types/agentProtocol.js +4 -1
  33. package/dist/agent/types/agentProtocol.js.map +1 -1
  34. package/dist/agent/types.d.ts +7 -0
  35. package/dist/agent/types.d.ts.map +1 -1
  36. package/dist/agent/types.js.map +1 -1
  37. package/dist/agentOpenAI/openAiRuntime.d.ts.map +1 -1
  38. package/dist/agentOpenAI/openAiRuntime.js +11 -1
  39. package/dist/agentOpenAI/openAiRuntime.js.map +1 -1
  40. package/dist/agentOpenAI/openAiToolAdapter.d.ts.map +1 -1
  41. package/dist/agentOpenAI/openAiToolAdapter.js +27 -2
  42. package/dist/agentOpenAI/openAiToolAdapter.js.map +1 -1
  43. package/dist/agentv3/artifactStore.d.ts +5 -0
  44. package/dist/agentv3/artifactStore.d.ts.map +1 -1
  45. package/dist/agentv3/artifactStore.js +3 -0
  46. package/dist/agentv3/artifactStore.js.map +1 -1
  47. package/dist/agentv3/claudeMcpServer.d.ts +15 -1
  48. package/dist/agentv3/claudeMcpServer.d.ts.map +1 -1
  49. package/dist/agentv3/claudeMcpServer.js +436 -91
  50. package/dist/agentv3/claudeMcpServer.js.map +1 -1
  51. package/dist/agentv3/claudeRuntime.d.ts.map +1 -1
  52. package/dist/agentv3/claudeRuntime.js +17 -0
  53. package/dist/agentv3/claudeRuntime.js.map +1 -1
  54. package/dist/agentv3/claudeSystemPrompt.d.ts.map +1 -1
  55. package/dist/agentv3/claudeSystemPrompt.js +9 -0
  56. package/dist/agentv3/claudeSystemPrompt.js.map +1 -1
  57. package/dist/agentv3/mcpToolRegistry.d.ts +14 -2
  58. package/dist/agentv3/mcpToolRegistry.d.ts.map +1 -1
  59. package/dist/agentv3/mcpToolRegistry.js +25 -6
  60. package/dist/agentv3/mcpToolRegistry.js.map +1 -1
  61. package/dist/agentv3/sessionStateSnapshot.d.ts +41 -0
  62. package/dist/agentv3/sessionStateSnapshot.d.ts.map +1 -1
  63. package/dist/agentv3/types.d.ts +5 -0
  64. package/dist/agentv3/types.d.ts.map +1 -1
  65. package/dist/agentv3/types.js.map +1 -1
  66. package/dist/assistant/application/agentAnalyzeSessionService.d.ts +6 -0
  67. package/dist/assistant/application/agentAnalyzeSessionService.d.ts.map +1 -1
  68. package/dist/assistant/application/agentAnalyzeSessionService.js +9 -3
  69. package/dist/assistant/application/agentAnalyzeSessionService.js.map +1 -1
  70. package/dist/assistant/application/assistantApplicationService.d.ts.map +1 -1
  71. package/dist/assistant/application/assistantApplicationService.js +3 -1
  72. package/dist/assistant/application/assistantApplicationService.js.map +1 -1
  73. package/dist/cli-user/bin.js +99 -1
  74. package/dist/cli-user/bin.js.map +1 -1
  75. package/dist/cli-user/commands/analyze.d.ts +3 -0
  76. package/dist/cli-user/commands/analyze.d.ts.map +1 -1
  77. package/dist/cli-user/commands/analyze.js +2 -0
  78. package/dist/cli-user/commands/analyze.js.map +1 -1
  79. package/dist/cli-user/commands/codebase.d.ts +29 -0
  80. package/dist/cli-user/commands/codebase.d.ts.map +1 -0
  81. package/dist/cli-user/commands/codebase.js +152 -0
  82. package/dist/cli-user/commands/codebase.js.map +1 -0
  83. package/dist/cli-user/commands/config.d.ts.map +1 -1
  84. package/dist/cli-user/commands/config.js +4 -1
  85. package/dist/cli-user/commands/config.js.map +1 -1
  86. package/dist/cli-user/commands/report.js +64 -0
  87. package/dist/cli-user/commands/report.js.map +1 -1
  88. package/dist/cli-user/io/paths.d.ts +3 -0
  89. package/dist/cli-user/io/paths.d.ts.map +1 -1
  90. package/dist/cli-user/io/paths.js +6 -0
  91. package/dist/cli-user/io/paths.js.map +1 -1
  92. package/dist/cli-user/io/sessionStore.d.ts +1 -0
  93. package/dist/cli-user/io/sessionStore.d.ts.map +1 -1
  94. package/dist/cli-user/io/sessionStore.js +5 -0
  95. package/dist/cli-user/io/sessionStore.js.map +1 -1
  96. package/dist/cli-user/repl/renderer.d.ts +8 -0
  97. package/dist/cli-user/repl/renderer.d.ts.map +1 -1
  98. package/dist/cli-user/repl/renderer.js.map +1 -1
  99. package/dist/cli-user/services/cliAnalyzeService.d.ts +6 -0
  100. package/dist/cli-user/services/cliAnalyzeService.d.ts.map +1 -1
  101. package/dist/cli-user/services/cliAnalyzeService.js +183 -29
  102. package/dist/cli-user/services/cliAnalyzeService.js.map +1 -1
  103. package/dist/cli-user/services/turnPersistence.d.ts +0 -10
  104. package/dist/cli-user/services/turnPersistence.d.ts.map +1 -1
  105. package/dist/cli-user/services/turnPersistence.js +62 -0
  106. package/dist/cli-user/services/turnPersistence.js.map +1 -1
  107. package/dist/cli-user/services/turnRunner.d.ts +3 -0
  108. package/dist/cli-user/services/turnRunner.d.ts.map +1 -1
  109. package/dist/cli-user/services/turnRunner.js +6 -0
  110. package/dist/cli-user/services/turnRunner.js.map +1 -1
  111. package/dist/cli-user/types.d.ts +5 -0
  112. package/dist/cli-user/types.d.ts.map +1 -1
  113. package/dist/routes/agentReportRoutes.d.ts +1 -0
  114. package/dist/routes/agentReportRoutes.d.ts.map +1 -1
  115. package/dist/routes/agentReportRoutes.js +13 -2
  116. package/dist/routes/agentReportRoutes.js.map +1 -1
  117. package/dist/routes/agentResumeRoutes.d.ts.map +1 -1
  118. package/dist/routes/agentResumeRoutes.js +29 -5
  119. package/dist/routes/agentResumeRoutes.js.map +1 -1
  120. package/dist/routes/agentRoutes.d.ts.map +1 -1
  121. package/dist/routes/agentRoutes.js +297 -91
  122. package/dist/routes/agentRoutes.js.map +1 -1
  123. package/dist/routes/ragAdminRoutes.d.ts +13 -24
  124. package/dist/routes/ragAdminRoutes.d.ts.map +1 -1
  125. package/dist/routes/ragAdminRoutes.js +266 -11
  126. package/dist/routes/ragAdminRoutes.js.map +1 -1
  127. package/dist/scripts/verifyAgentSseScrolling.js +119 -3
  128. package/dist/scripts/verifyAgentSseScrolling.js.map +1 -1
  129. package/dist/services/agentEventStore.d.ts.map +1 -1
  130. package/dist/services/agentEventStore.js +13 -3
  131. package/dist/services/agentEventStore.js.map +1 -1
  132. package/dist/services/agentReportData.d.ts +3 -0
  133. package/dist/services/agentReportData.d.ts.map +1 -1
  134. package/dist/services/agentReportData.js.map +1 -1
  135. package/dist/services/analysisResultSnapshotPipeline.d.ts +3 -0
  136. package/dist/services/analysisResultSnapshotPipeline.d.ts.map +1 -1
  137. package/dist/services/analysisResultSnapshotPipeline.js +3 -0
  138. package/dist/services/analysisResultSnapshotPipeline.js.map +1 -1
  139. package/dist/services/analysisResultSnapshotStore.d.ts.map +1 -1
  140. package/dist/services/analysisResultSnapshotStore.js +34 -2
  141. package/dist/services/analysisResultSnapshotStore.js.map +1 -1
  142. package/dist/services/aospKnowledgeIngester.d.ts +7 -0
  143. package/dist/services/aospKnowledgeIngester.d.ts.map +1 -1
  144. package/dist/services/aospKnowledgeIngester.js +19 -7
  145. package/dist/services/aospKnowledgeIngester.js.map +1 -1
  146. package/dist/services/auth/codebaseScopes.d.ts +6 -0
  147. package/dist/services/auth/codebaseScopes.d.ts.map +1 -0
  148. package/dist/services/auth/codebaseScopes.js +23 -0
  149. package/dist/services/auth/codebaseScopes.js.map +1 -0
  150. package/dist/services/codebase/codeAwareFeature.d.ts +4 -0
  151. package/dist/services/codebase/codeAwareFeature.d.ts.map +1 -0
  152. package/dist/services/codebase/codeAwareFeature.js +18 -0
  153. package/dist/services/codebase/codeAwareFeature.js.map +1 -0
  154. package/dist/services/codebase/codeLookupLedger.d.ts +37 -0
  155. package/dist/services/codebase/codeLookupLedger.d.ts.map +1 -0
  156. package/dist/services/codebase/codeLookupLedger.js +126 -0
  157. package/dist/services/codebase/codeLookupLedger.js.map +1 -0
  158. package/dist/services/codebase/codebaseRegistry.d.ts +76 -0
  159. package/dist/services/codebase/codebaseRegistry.d.ts.map +1 -0
  160. package/dist/services/codebase/codebaseRegistry.js +164 -0
  161. package/dist/services/codebase/codebaseRegistry.js.map +1 -0
  162. package/dist/services/codebase/defaultCodebaseServices.d.ts +5 -0
  163. package/dist/services/codebase/defaultCodebaseServices.d.ts.map +1 -0
  164. package/dist/services/codebase/defaultCodebaseServices.js +21 -0
  165. package/dist/services/codebase/defaultCodebaseServices.js.map +1 -0
  166. package/dist/services/codebase/patchProposer.d.ts +44 -0
  167. package/dist/services/codebase/patchProposer.d.ts.map +1 -0
  168. package/dist/services/codebase/patchProposer.js +163 -0
  169. package/dist/services/codebase/patchProposer.js.map +1 -0
  170. package/dist/services/codebase/pathSecurityGate.d.ts +33 -0
  171. package/dist/services/codebase/pathSecurityGate.d.ts.map +1 -0
  172. package/dist/services/codebase/pathSecurityGate.js +214 -0
  173. package/dist/services/codebase/pathSecurityGate.js.map +1 -0
  174. package/dist/services/enterpriseSchema.d.ts.map +1 -1
  175. package/dist/services/enterpriseSchema.js +11 -0
  176. package/dist/services/enterpriseSchema.js.map +1 -1
  177. package/dist/services/evidence/evidenceContractBuilder.d.ts +11 -0
  178. package/dist/services/evidence/evidenceContractBuilder.d.ts.map +1 -0
  179. package/dist/services/evidence/evidenceContractBuilder.js +530 -0
  180. package/dist/services/evidence/evidenceContractBuilder.js.map +1 -0
  181. package/dist/services/htmlReportGenerator.d.ts +9 -0
  182. package/dist/services/htmlReportGenerator.d.ts.map +1 -1
  183. package/dist/services/htmlReportGenerator.js +133 -0
  184. package/dist/services/htmlReportGenerator.js.map +1 -1
  185. package/dist/services/persistAgentSession.d.ts.map +1 -1
  186. package/dist/services/persistAgentSession.js +24 -0
  187. package/dist/services/persistAgentSession.js.map +1 -1
  188. package/dist/services/processIdentity/identityContractMapper.d.ts +14 -0
  189. package/dist/services/processIdentity/identityContractMapper.d.ts.map +1 -0
  190. package/dist/services/processIdentity/identityContractMapper.js +135 -0
  191. package/dist/services/processIdentity/identityContractMapper.js.map +1 -0
  192. package/dist/services/processIdentity/types.d.ts +5 -0
  193. package/dist/services/processIdentity/types.d.ts.map +1 -1
  194. package/dist/services/processIdentity/types.js.map +1 -1
  195. package/dist/services/rag/aospSourceIngester.d.ts +26 -0
  196. package/dist/services/rag/aospSourceIngester.d.ts.map +1 -0
  197. package/dist/services/rag/aospSourceIngester.js +143 -0
  198. package/dist/services/rag/aospSourceIngester.js.map +1 -0
  199. package/dist/services/rag/appSourceIngester.d.ts +37 -0
  200. package/dist/services/rag/appSourceIngester.d.ts.map +1 -0
  201. package/dist/services/rag/appSourceIngester.js +165 -0
  202. package/dist/services/rag/appSourceIngester.js.map +1 -0
  203. package/dist/services/rag/baseIngester.d.ts +18 -0
  204. package/dist/services/rag/baseIngester.d.ts.map +1 -0
  205. package/dist/services/rag/baseIngester.js +197 -0
  206. package/dist/services/rag/baseIngester.js.map +1 -0
  207. package/dist/services/rag/kernelSourceIngester.d.ts +35 -0
  208. package/dist/services/rag/kernelSourceIngester.d.ts.map +1 -0
  209. package/dist/services/rag/kernelSourceIngester.js +170 -0
  210. package/dist/services/rag/kernelSourceIngester.js.map +1 -0
  211. package/dist/services/rag/lookupResponseFilter.d.ts +42 -0
  212. package/dist/services/rag/lookupResponseFilter.d.ts.map +1 -0
  213. package/dist/services/rag/lookupResponseFilter.js +192 -0
  214. package/dist/services/rag/lookupResponseFilter.js.map +1 -0
  215. package/dist/services/rag/sessionToolResultRegistry.d.ts +25 -0
  216. package/dist/services/rag/sessionToolResultRegistry.d.ts.map +1 -0
  217. package/dist/services/rag/sessionToolResultRegistry.js +57 -0
  218. package/dist/services/rag/sessionToolResultRegistry.js.map +1 -0
  219. package/dist/services/rag/toolResultProjectionFilter.d.ts +18 -0
  220. package/dist/services/rag/toolResultProjectionFilter.d.ts.map +1 -0
  221. package/dist/services/rag/toolResultProjectionFilter.js +33 -0
  222. package/dist/services/rag/toolResultProjectionFilter.js.map +1 -0
  223. package/dist/services/ragStore.d.ts +8 -0
  224. package/dist/services/ragStore.d.ts.map +1 -1
  225. package/dist/services/ragStore.js +77 -8
  226. package/dist/services/ragStore.js.map +1 -1
  227. package/dist/services/rbac.d.ts +1 -1
  228. package/dist/services/rbac.d.ts.map +1 -1
  229. package/dist/services/rbac.js +6 -0
  230. package/dist/services/rbac.js.map +1 -1
  231. package/dist/services/security/codeAwareOutputRegistry.d.ts +6 -0
  232. package/dist/services/security/codeAwareOutputRegistry.d.ts.map +1 -0
  233. package/dist/services/security/codeAwareOutputRegistry.js +55 -0
  234. package/dist/services/security/codeAwareOutputRegistry.js.map +1 -0
  235. package/dist/services/security/llmEchoOutputFilter.d.ts +49 -0
  236. package/dist/services/security/llmEchoOutputFilter.d.ts.map +1 -0
  237. package/dist/services/security/llmEchoOutputFilter.js +133 -0
  238. package/dist/services/security/llmEchoOutputFilter.js.map +1 -0
  239. package/dist/services/security/secretPatterns.d.ts +6 -0
  240. package/dist/services/security/secretPatterns.d.ts.map +1 -0
  241. package/dist/services/security/secretPatterns.js +23 -0
  242. package/dist/services/security/secretPatterns.js.map +1 -0
  243. package/dist/services/skillEngine/skillExecutor.d.ts +14 -2
  244. package/dist/services/skillEngine/skillExecutor.d.ts.map +1 -1
  245. package/dist/services/skillEngine/skillExecutor.js +133 -13
  246. package/dist/services/skillEngine/skillExecutor.js.map +1 -1
  247. package/dist/services/skillEngine/types.d.ts +2 -0
  248. package/dist/services/skillEngine/types.d.ts.map +1 -1
  249. package/dist/services/symbol/breakpadSymParser.d.ts +19 -0
  250. package/dist/services/symbol/breakpadSymParser.d.ts.map +1 -0
  251. package/dist/services/symbol/breakpadSymParser.js +40 -0
  252. package/dist/services/symbol/breakpadSymParser.js.map +1 -0
  253. package/dist/services/symbol/kallsymsParser.d.ts +12 -0
  254. package/dist/services/symbol/kallsymsParser.d.ts.map +1 -0
  255. package/dist/services/symbol/kallsymsParser.js +41 -0
  256. package/dist/services/symbol/kallsymsParser.js.map +1 -0
  257. package/dist/services/symbol/r8MappingParser.d.ts +40 -0
  258. package/dist/services/symbol/r8MappingParser.d.ts.map +1 -0
  259. package/dist/services/symbol/r8MappingParser.js +99 -0
  260. package/dist/services/symbol/r8MappingParser.js.map +1 -0
  261. package/dist/services/symbol/symbolResolver.d.ts +59 -0
  262. package/dist/services/symbol/symbolResolver.d.ts.map +1 -0
  263. package/dist/services/symbol/symbolResolver.js +147 -0
  264. package/dist/services/symbol/symbolResolver.js.map +1 -0
  265. package/dist/services/symbol/traceSymbolContext.d.ts +14 -0
  266. package/dist/services/symbol/traceSymbolContext.d.ts.map +1 -0
  267. package/dist/services/symbol/traceSymbolContext.js +45 -0
  268. package/dist/services/symbol/traceSymbolContext.js.map +1 -0
  269. package/dist/services/verifier/claimVerificationRunner.d.ts +20 -0
  270. package/dist/services/verifier/claimVerificationRunner.d.ts.map +1 -0
  271. package/dist/services/verifier/claimVerificationRunner.js +88 -0
  272. package/dist/services/verifier/claimVerificationRunner.js.map +1 -0
  273. package/dist/services/verifier/deterministicClaimVerifier.d.ts +8 -0
  274. package/dist/services/verifier/deterministicClaimVerifier.d.ts.map +1 -0
  275. package/dist/services/verifier/deterministicClaimVerifier.js +178 -0
  276. package/dist/services/verifier/deterministicClaimVerifier.js.map +1 -0
  277. package/dist/types/claimVerification.d.ts +38 -0
  278. package/dist/types/claimVerification.d.ts.map +1 -0
  279. package/dist/types/claimVerification.js +6 -0
  280. package/dist/types/claimVerification.js.map +1 -0
  281. package/dist/types/dataContract.d.ts +30 -0
  282. package/dist/types/dataContract.d.ts.map +1 -1
  283. package/dist/types/dataContract.js +7 -0
  284. package/dist/types/dataContract.js.map +1 -1
  285. package/dist/types/evidenceContract.d.ts +100 -0
  286. package/dist/types/evidenceContract.d.ts.map +1 -0
  287. package/dist/types/evidenceContract.js +6 -0
  288. package/dist/types/evidenceContract.js.map +1 -0
  289. package/dist/types/identityContract.d.ts +57 -0
  290. package/dist/types/identityContract.d.ts.map +1 -0
  291. package/dist/types/identityContract.js +6 -0
  292. package/dist/types/identityContract.js.map +1 -0
  293. package/dist/types/multiTraceComparison.d.ts +3 -0
  294. package/dist/types/multiTraceComparison.d.ts.map +1 -1
  295. package/dist/types/sparkContracts.d.ts +31 -3
  296. package/dist/types/sparkContracts.d.ts.map +1 -1
  297. package/dist/types/sparkContracts.js.map +1 -1
  298. package/package.json +8 -1
  299. package/skills/atomic/process_identity_resolver.skill.yaml +130 -1
  300. package/skills/atomic/process_slice_cpu_hotspots.skill.yaml +321 -0
  301. package/skills/composite/code_pinpoint.skill.yaml +111 -0
  302. package/strategies/anr.strategy.md +2 -2
  303. package/strategies/code-aware.template.md +37 -0
  304. package/strategies/game.strategy.md +1 -1
  305. package/strategies/general.strategy.md +1 -1
  306. package/strategies/prompt-methodology.template.md +2 -0
  307. package/strategies/scrolling.strategy.md +1 -0
@@ -3863,6 +3863,21 @@ class HTMLReportGenerator {
3863
3863
  .claim-source-status.found { background: #dcfce7; color: #166534; }
3864
3864
  .claim-source-status.missing { background: #fee2e2; color: #991b1b; }
3865
3865
  .claim-source-status.ambiguous { background: #fef3c7; color: #92400e; }
3866
+ .code-aware-grid { display: grid; gap: 10px; }
3867
+ .code-ref-card, .patch-card {
3868
+ border: 1px solid #dbeafe; border-radius: 8px; background: #f8fbff; padding: 12px;
3869
+ }
3870
+ .code-ref-title, .patch-title { font-weight: 700; color: #1e3a8a; margin-bottom: 6px; }
3871
+ .code-ref-meta, .patch-meta {
3872
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
3873
+ font-size: 12px; color: #334155; word-break: break-word;
3874
+ }
3875
+ .patch-status {
3876
+ display: inline-block; border-radius: 999px; padding: 2px 8px; font-size: 11px; font-weight: 700; margin-left: 6px;
3877
+ }
3878
+ .patch-status.verified { background: #dcfce7; color: #166534; }
3879
+ .patch-status.sketch { background: #fef3c7; color: #92400e; }
3880
+ .patch-status.unverified { background: #fee2e2; color: #991b1b; }
3866
3881
  .timeline-list {
3867
3882
  display: flex; flex-direction: column; gap: 10px;
3868
3883
  max-height: 420px; overflow-y: auto; padding-right: 4px;
@@ -4054,6 +4069,8 @@ class HTMLReportGenerator {
4054
4069
 
4055
4070
  ${this.renderFindingsSection(result.findings, dataEnvelopes)}
4056
4071
 
4072
+ ${this.renderCodeAwareReferencesSection(result.conclusionContract, outputLanguage)}
4073
+
4057
4074
  <div class="section">
4058
4075
  <h2 class="section-title">${(0, outputLanguage_1.localize)(outputLanguage, '分析结论', 'Analysis Conclusion')}</h2>
4059
4076
  ${(conclusionHistory && conclusionHistory.length > 1)
@@ -4072,6 +4089,8 @@ class HTMLReportGenerator {
4072
4089
 
4073
4090
  ${this.renderConclusionClaimSourcesSection(result.conclusionContract, dataEnvelopes, outputLanguage)}
4074
4091
 
4092
+ ${this.renderClaimVerificationSection(result.claimSupport, result.claimVerificationResult, result.identityResolutions, outputLanguage)}
4093
+
4075
4094
  <div class="footer">
4076
4095
  <p>${(0, outputLanguage_1.localize)(outputLanguage, '由 SmartPerfetto Agent-Driven Orchestrator 生成', 'Generated by SmartPerfetto Agent-Driven Orchestrator')}</p>
4077
4096
  <p style="margin-top: 5px; font-size: 12px;">Powered by Claude Agent SDK + MCP Tools</p>
@@ -4315,6 +4334,56 @@ class HTMLReportGenerator {
4315
4334
  })();
4316
4335
  return `${skillId}:${stepId}:${source}:${traceSide}:${traceId}:${compactData.slice(0, 512)}`;
4317
4336
  }
4337
+ renderCodeAwareReferencesSection(contract, outputLanguage = outputLanguage_1.DEFAULT_OUTPUT_LANGUAGE) {
4338
+ const record = this.asReportRecord(contract);
4339
+ if (!record)
4340
+ return '';
4341
+ const codeReferences = this.readReportAliasedRecords(record, ['codeReferences', 'code_refs', 'codeRefs']);
4342
+ const patchProposals = this.readReportAliasedRecords(record, ['patchProposals', 'patch_proposals', 'patches']);
4343
+ if (codeReferences.length === 0 && patchProposals.length === 0)
4344
+ return '';
4345
+ const codeRefHtml = codeReferences.map(ref => {
4346
+ const chunkId = this.escapeHtml(String(ref.chunkId ?? ref.chunk_id ?? ''));
4347
+ const codebaseId = this.escapeHtml(String(ref.codebaseId ?? ref.codebase_id ?? ''));
4348
+ const filePath = this.escapeHtml(String(ref.filePath ?? ref.file_path ?? ''));
4349
+ const symbol = this.escapeHtml(String(ref.symbol ?? ''));
4350
+ const lineRange = this.formatLineRange(ref.lineRange ?? ref.line_range);
4351
+ return `
4352
+ <div class="code-ref-card">
4353
+ <div class="code-ref-title">${symbol || chunkId || filePath}</div>
4354
+ <div class="code-ref-meta">chunkId=${chunkId}${codebaseId ? ` · codebaseId=${codebaseId}` : ''}${filePath ? ` · ${filePath}${lineRange}` : ''}</div>
4355
+ </div>`;
4356
+ }).join('');
4357
+ const patchHtml = patchProposals.map(patch => {
4358
+ const status = String(patch.patchStatus ?? patch.patch_status ?? 'unverified');
4359
+ const safeStatus = status === 'verified' || status === 'sketch' || status === 'unverified' ? status : 'unverified';
4360
+ const proposalId = this.escapeHtml(String(patch.patchProposalId ?? patch.patch_proposal_id ?? ''));
4361
+ const rationale = this.escapeHtml(String(patch.rationale ?? patch.patchSketch ?? patch.patch_sketch ?? ''));
4362
+ return `
4363
+ <div class="patch-card">
4364
+ <div class="patch-title">${proposalId || 'patch'}<span class="patch-status ${safeStatus}">${safeStatus}</span></div>
4365
+ <div class="patch-meta">${rationale}</div>
4366
+ </div>`;
4367
+ }).join('');
4368
+ return `
4369
+ <div class="section">
4370
+ <h2 class="section-title">${(0, outputLanguage_1.localize)(outputLanguage, '代码引用与 Patch', 'Code References and Patches')}</h2>
4371
+ <div class="code-aware-grid">
4372
+ ${codeRefHtml}
4373
+ ${patchHtml}
4374
+ </div>
4375
+ </div>`;
4376
+ }
4377
+ formatLineRange(value) {
4378
+ const record = this.asReportRecord(value);
4379
+ if (!record)
4380
+ return '';
4381
+ const start = record.start ?? record.line_start;
4382
+ const end = record.end ?? record.line_end;
4383
+ if (start === undefined || end === undefined)
4384
+ return '';
4385
+ return `:${this.escapeHtml(String(start))}-${this.escapeHtml(String(end))}`;
4386
+ }
4318
4387
  renderConclusionClaimSourcesSection(contract, envelopes, outputLanguage = outputLanguage_1.DEFAULT_OUTPUT_LANGUAGE) {
4319
4388
  const contractRecord = this.asReportRecord(contract);
4320
4389
  if (!contractRecord)
@@ -4385,6 +4454,70 @@ class HTMLReportGenerator {
4385
4454
  ${omittedClaims > 0 ? `<div class="claim-source-note">${this.escapeHtml((0, outputLanguage_1.localize)(outputLanguage, `还有 ${omittedClaims} 条断言未展开`, `${omittedClaims} more claims omitted`))}</div>` : ''}
4386
4455
  </div>`;
4387
4456
  }
4457
+ renderClaimVerificationSection(claimSupport, verification, identityResolutions, outputLanguage = outputLanguage_1.DEFAULT_OUTPUT_LANGUAGE) {
4458
+ if (!verification && (!claimSupport || claimSupport.length === 0) && (!identityResolutions || identityResolutions.length === 0)) {
4459
+ return '';
4460
+ }
4461
+ const supportCounts = new Map();
4462
+ const supportStatuses = verification?.claimResults?.length
4463
+ ? verification.claimResults.map(claim => claim.status)
4464
+ : (claimSupport || []).map(claim => claim.supportLevel);
4465
+ for (const status of supportStatuses) {
4466
+ supportCounts.set(status, (supportCounts.get(status) || 0) + 1);
4467
+ }
4468
+ const supportSummary = Array.from(supportCounts.entries())
4469
+ .map(([key, count]) => `${this.escapeHtml(key)}: ${count}`)
4470
+ .join(' · ');
4471
+ const status = verification?.status || 'not_checked';
4472
+ const issueRows = (verification?.issues || []).slice(0, 12).map(issue => `
4473
+ <tr>
4474
+ <td>${this.escapeHtml(issue.severity)}</td>
4475
+ <td>${this.escapeHtml(issue.claimId)}</td>
4476
+ <td><code>${this.escapeHtml(issue.code)}</code></td>
4477
+ <td>${this.escapeHtml(issue.message)}</td>
4478
+ </tr>
4479
+ `).join('');
4480
+ const identitySummary = (identityResolutions || []).slice(0, 8).map(item => `
4481
+ <tr>
4482
+ <td><code>${this.escapeHtml(item.identityRefId)}</code></td>
4483
+ <td>${this.escapeHtml(item.status)}</td>
4484
+ <td>${this.escapeHtml(item.target.processName || item.target.packageName || '-')}</td>
4485
+ <td>${this.escapeHtml(item.target.threadName || item.target.role || '-')}</td>
4486
+ </tr>
4487
+ `).join('');
4488
+ return `
4489
+ <div class="section">
4490
+ <h2 class="section-title">${(0, outputLanguage_1.localize)(outputLanguage, '断言验证结果', 'Claim Verification')}</h2>
4491
+ <div class="claim-source-note">
4492
+ ${this.escapeHtml((0, outputLanguage_1.localize)(outputLanguage, `Verifier 状态: ${status};检查断言 ${verification?.checkedClaimCount ?? 0} 条;不支持 ${verification?.unsupportedClaimCount ?? 0} 条${supportSummary ? `;支持级别 ${supportSummary}` : ''}`, `Verifier status: ${status}; checked ${verification?.checkedClaimCount ?? 0} claims; unsupported ${verification?.unsupportedClaimCount ?? 0}${supportSummary ? `; support levels ${supportSummary}` : ''}`))}
4493
+ </div>
4494
+ ${issueRows ? `
4495
+ <table class="claim-source-table">
4496
+ <thead>
4497
+ <tr>
4498
+ <th>${this.escapeHtml((0, outputLanguage_1.localize)(outputLanguage, '级别', 'Severity'))}</th>
4499
+ <th>${this.escapeHtml((0, outputLanguage_1.localize)(outputLanguage, '断言', 'Claim'))}</th>
4500
+ <th>${this.escapeHtml((0, outputLanguage_1.localize)(outputLanguage, '代码', 'Code'))}</th>
4501
+ <th>${this.escapeHtml((0, outputLanguage_1.localize)(outputLanguage, '说明', 'Message'))}</th>
4502
+ </tr>
4503
+ </thead>
4504
+ <tbody>${issueRows}</tbody>
4505
+ </table>` : ''}
4506
+ ${identitySummary ? `
4507
+ <div class="claim-source-note">${this.escapeHtml((0, outputLanguage_1.localize)(outputLanguage, '身份解析 Sidecar', 'Identity Resolution Sidecars'))}</div>
4508
+ <table class="claim-source-table">
4509
+ <thead>
4510
+ <tr>
4511
+ <th>${this.escapeHtml((0, outputLanguage_1.localize)(outputLanguage, 'ID', 'ID'))}</th>
4512
+ <th>${this.escapeHtml((0, outputLanguage_1.localize)(outputLanguage, '状态', 'Status'))}</th>
4513
+ <th>${this.escapeHtml((0, outputLanguage_1.localize)(outputLanguage, '进程', 'Process'))}</th>
4514
+ <th>${this.escapeHtml((0, outputLanguage_1.localize)(outputLanguage, '线程', 'Thread'))}</th>
4515
+ </tr>
4516
+ </thead>
4517
+ <tbody>${identitySummary}</tbody>
4518
+ </table>` : ''}
4519
+ </div>`;
4520
+ }
4388
4521
  renderClaimReferenceRow(ref, sourceLookup, outputLanguage) {
4389
4522
  const evidenceRefId = this.readReportAliasedString(ref, [
4390
4523
  'evidenceRefId',