@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
@@ -22,6 +22,7 @@ const teaching_types_1 = require("../../types/teaching.types");
22
22
  const dataContract_1 = require("../../types/dataContract");
23
23
  const displayContractValidator_1 = require("./displayContractValidator");
24
24
  const identityGate_1 = require("../processIdentity/identityGate");
25
+ const identityContractMapper_1 = require("../processIdentity/identityContractMapper");
25
26
  /**
26
27
  * 将 YAML 中的 layer 值规范化为语义名称
27
28
  */
@@ -929,6 +930,12 @@ class SkillExecutor {
929
930
  });
930
931
  }
931
932
  }
933
+ resolveTraceSide(inherited) {
934
+ const value = inherited.__traceSide;
935
+ return value === 'current' || value === 'reference' || value === 'unknown'
936
+ ? value
937
+ : 'current';
938
+ }
932
939
  buildIdentityCacheKey(traceId, target) {
933
940
  return JSON.stringify({
934
941
  traceId,
@@ -975,17 +982,65 @@ class SkillExecutor {
975
982
  targetMatchSources: row.target_match_sources ? String(row.target_match_sources) : undefined,
976
983
  supportingSources: row.supporting_sources ? String(row.supporting_sources) : undefined,
977
984
  identityWarning: row.identity_warning ? String(row.identity_warning) : undefined,
985
+ threadUtid: this.toNumber(row.thread_utid),
986
+ threadTid: this.toNumber(row.thread_tid),
987
+ threadName: row.thread_name ? String(row.thread_name) : undefined,
988
+ threadRole: row.thread_role === 'app_main' || row.thread_role === 'render_thread'
989
+ ? row.thread_role
990
+ : this.toNumber(row.thread_utid) !== undefined ? 'unknown' : undefined,
991
+ threadTargetMatched: this.toNumber(row.thread_target_matched) === 1,
978
992
  };
979
993
  }
980
- normalizeIdentityStatus(candidate) {
994
+ hasExactProcessIdTarget(target, candidate) {
995
+ if (!candidate)
996
+ return false;
997
+ const sources = new Set(this.splitSources(candidate.targetMatchSources));
998
+ return Boolean(target.upid !== undefined && sources.has('upid'));
999
+ }
1000
+ identityQualityWarnings(candidate, candidates, target) {
1001
+ if (!candidate)
1002
+ return [];
1003
+ const warnings = new Set();
1004
+ const warning = candidate.identityWarning && candidate.identityWarning !== 'ok'
1005
+ ? candidate.identityWarning
1006
+ : undefined;
1007
+ if (warning)
1008
+ warnings.add(warning);
1009
+ const targetSources = new Set(this.splitSources(candidate.targetMatchSources));
1010
+ const hasProcessTarget = Boolean(target.requestedName ||
1011
+ target.upid !== undefined ||
1012
+ target.pid !== undefined);
1013
+ const hasExactProcessId = this.hasExactProcessIdTarget(target, candidate);
1014
+ const processLevelSources = Array.from(targetSources)
1015
+ .filter(source => source !== 'thread.name');
1016
+ if (target.threadName && !hasProcessTarget) {
1017
+ warnings.add('thread-only identity target is not enough to verify a unique process');
1018
+ }
1019
+ if (processLevelSources.length === 0) {
1020
+ warnings.add('identity candidate has no process-level target match source');
1021
+ }
1022
+ if (candidate.rawStatus === 'probable' && !hasExactProcessId) {
1023
+ warnings.add('probable identity match requires additional confirmation before parameter rewrite');
1024
+ }
1025
+ const second = candidates.find(item => item !== candidate &&
1026
+ item.confidenceScore > 0);
1027
+ if (second && candidate.confidenceScore - second.confidenceScore < 20) {
1028
+ warnings.add('multiple close process identity candidates require manual confirmation');
1029
+ }
1030
+ return Array.from(warnings);
1031
+ }
1032
+ normalizeIdentityStatus(candidate, candidates, target) {
981
1033
  if (!candidate)
982
1034
  return 'not_found';
983
- if ((candidate.rawStatus === 'confirmed' || candidate.rawStatus === 'probable') &&
984
- candidate.confidenceScore >= 50) {
985
- return 'verified';
986
- }
987
1035
  if (candidate.confidenceScore <= 0)
988
1036
  return 'not_found';
1037
+ const qualityWarnings = this.identityQualityWarnings(candidate, candidates, target);
1038
+ const hasExactProcessId = this.hasExactProcessIdTarget(target, candidate);
1039
+ if (qualityWarnings.length === 0 &&
1040
+ ((candidate.rawStatus === 'confirmed' && candidate.confidenceScore >= 80) ||
1041
+ (hasExactProcessId && candidate.confidenceScore >= 50))) {
1042
+ return 'verified';
1043
+ }
989
1044
  return 'ambiguous';
990
1045
  }
991
1046
  async resolveProcessIdentityForGate(traceId, target, inherited) {
@@ -1031,9 +1086,9 @@ class SkillExecutor {
1031
1086
  : [];
1032
1087
  const candidates = rows.map(row => this.rowToIdentityCandidate(row));
1033
1088
  const top = candidates[0];
1034
- const warning = top?.identityWarning && top.identityWarning !== 'ok' ? top.identityWarning : undefined;
1089
+ const qualityWarnings = this.identityQualityWarnings(top, candidates, target);
1035
1090
  resolution = {
1036
- status: this.normalizeIdentityStatus(top),
1091
+ status: this.normalizeIdentityStatus(top, candidates, target),
1037
1092
  requestedName: target.requestedName,
1038
1093
  canonicalPackageName: top?.canonicalPackageName,
1039
1094
  recommendedProcessNameParam: top?.recommendedProcessNameParam,
@@ -1041,7 +1096,7 @@ class SkillExecutor {
1041
1096
  confidenceScore: top?.confidenceScore ?? 0,
1042
1097
  rawStatus: top?.rawStatus,
1043
1098
  evidenceSources: this.splitSources(top?.targetMatchSources, top?.supportingSources),
1044
- warnings: warning ? [warning] : [],
1099
+ warnings: qualityWarnings,
1045
1100
  candidates,
1046
1101
  };
1047
1102
  }
@@ -1072,13 +1127,31 @@ class SkillExecutor {
1072
1127
  resolve: (target) => this.resolveProcessIdentityForGate(traceId, target, inherited),
1073
1128
  });
1074
1129
  }
1075
- buildIdentityBlockedResult(skillId, skill, startTime, gate) {
1130
+ buildIdentityBlockedResult(skillId, skill, traceId, traceSide, startTime, gate) {
1076
1131
  const error = gate.error || `Process identity gate blocked skill: ${skillId}`;
1132
+ const identityResolution = (0, identityContractMapper_1.buildIdentityResolutionFromProcessGate)({
1133
+ traceId,
1134
+ traceSide,
1135
+ target: gate.target,
1136
+ resolution: gate.resolution,
1137
+ ...(gate.config.policy === 'required' && !gate.resolution
1138
+ ? { statusOverride: 'missing', warnings: [error] }
1139
+ : {}),
1140
+ });
1077
1141
  return {
1078
1142
  skillId,
1079
1143
  skillName: skill.meta.display_name,
1080
1144
  success: false,
1081
- displayResults: [],
1145
+ displayResults: [{
1146
+ stepId: 'process_identity_gate',
1147
+ title: 'Process identity gate blocked',
1148
+ level: 'detail',
1149
+ layer: 'diagnosis',
1150
+ format: 'text',
1151
+ data: {
1152
+ text: error,
1153
+ },
1154
+ }],
1082
1155
  diagnostics: [{
1083
1156
  id: 'process_identity_gate_blocked',
1084
1157
  diagnosis: error,
@@ -1095,6 +1168,7 @@ class SkillExecutor {
1095
1168
  ],
1096
1169
  source: 'rule',
1097
1170
  }],
1171
+ ...(identityResolution ? { identityResolution } : {}),
1098
1172
  executionTimeMs: Date.now() - startTime,
1099
1173
  error,
1100
1174
  };
@@ -1167,6 +1241,7 @@ class SkillExecutor {
1167
1241
  */
1168
1242
  async execute(skillId, traceId, params = {}, inherited = {}) {
1169
1243
  const startTime = Date.now();
1244
+ const traceSide = this.resolveTraceSide(inherited);
1170
1245
  const skill = this.skillRegistry.get(skillId);
1171
1246
  if (!skill) {
1172
1247
  return {
@@ -1191,8 +1266,14 @@ class SkillExecutor {
1191
1266
  skillId,
1192
1267
  data: { error: gate.error },
1193
1268
  });
1194
- return this.buildIdentityBlockedResult(skillId, skill, startTime, gate);
1269
+ return this.buildIdentityBlockedResult(skillId, skill, traceId, traceSide, startTime, gate);
1195
1270
  }
1271
+ const identityResolution = (0, identityContractMapper_1.buildIdentityResolutionFromProcessGate)({
1272
+ traceId,
1273
+ traceSide,
1274
+ target: gate.target,
1275
+ resolution: gate.resolution,
1276
+ });
1196
1277
  // Validate and coerce input parameters against skill.inputs declarations
1197
1278
  const validated = (0, skillValidator_1.validateSkillInputs)(skillId, skill.inputs, gate.params);
1198
1279
  for (const w of validated.warnings) {
@@ -1207,6 +1288,7 @@ class SkillExecutor {
1207
1288
  success: false,
1208
1289
  displayResults: [],
1209
1290
  diagnostics: [],
1291
+ ...(identityResolution ? { identityResolution } : {}),
1210
1292
  executionTimeMs: Date.now() - startTime,
1211
1293
  error: `Input validation failed: ${msg}`,
1212
1294
  };
@@ -1235,6 +1317,7 @@ class SkillExecutor {
1235
1317
  success: false,
1236
1318
  displayResults: [],
1237
1319
  diagnostics: [],
1320
+ ...(identityResolution ? { identityResolution } : {}),
1238
1321
  executionTimeMs: Date.now() - startTime,
1239
1322
  error: `Skipped: ${prereqCheck.error}`,
1240
1323
  };
@@ -1262,6 +1345,7 @@ class SkillExecutor {
1262
1345
  success: false,
1263
1346
  displayResults: [],
1264
1347
  diagnostics: [],
1348
+ ...(identityResolution ? { identityResolution } : {}),
1265
1349
  executionTimeMs: Date.now() - startTime,
1266
1350
  error: atomicResult.error,
1267
1351
  };
@@ -1283,6 +1367,7 @@ class SkillExecutor {
1283
1367
  success: false,
1284
1368
  displayResults: [],
1285
1369
  diagnostics: [],
1370
+ ...(identityResolution ? { identityResolution } : {}),
1286
1371
  executionTimeMs: Date.now() - startTime,
1287
1372
  error: 'No SQL or steps defined for atomic skill',
1288
1373
  };
@@ -1305,6 +1390,7 @@ class SkillExecutor {
1305
1390
  success: false,
1306
1391
  displayResults: [],
1307
1392
  diagnostics: [],
1393
+ ...(identityResolution ? { identityResolution } : {}),
1308
1394
  executionTimeMs: Date.now() - startTime,
1309
1395
  error: `No steps defined for skill: ${skillId}`,
1310
1396
  };
@@ -1321,6 +1407,7 @@ class SkillExecutor {
1321
1407
  success: false,
1322
1408
  displayResults: [],
1323
1409
  diagnostics: [],
1410
+ ...(identityResolution ? { identityResolution } : {}),
1324
1411
  executionTimeMs: Date.now() - startTime,
1325
1412
  error: `Skill type '${skill.type}' is metadata-only and not executable by the single-trace SkillExecutor: ${skillId}`,
1326
1413
  };
@@ -1350,6 +1437,7 @@ class SkillExecutor {
1350
1437
  aiSummary,
1351
1438
  synthesizeData: synthesizeData.length > 0 ? synthesizeData : undefined,
1352
1439
  rawResults: context.results,
1440
+ ...(identityResolution ? { identityResolution } : {}),
1353
1441
  executionTimeMs: Date.now() - startTime,
1354
1442
  };
1355
1443
  }
@@ -1365,6 +1453,7 @@ class SkillExecutor {
1365
1453
  success: false,
1366
1454
  displayResults: [],
1367
1455
  diagnostics: [],
1456
+ ...(identityResolution ? { identityResolution } : {}),
1368
1457
  executionTimeMs: Date.now() - startTime,
1369
1458
  error: error.message,
1370
1459
  };
@@ -3557,7 +3646,7 @@ class SkillExecutor {
3557
3646
  *
3558
3647
  * 用于 v2.0 数据契约,统一 SSE 事件格式
3559
3648
  */
3560
- static toDataEnvelopes(result, columnDefinitions) {
3649
+ static toDataEnvelopes(result, columnDefinitions, provenance) {
3561
3650
  return result.displayResults.map(dr => {
3562
3651
  // Prefer external columnDefinitions, fallback to embedded columnDefinitions in DisplayResult
3563
3652
  const explicitColumns = columnDefinitions?.[dr.stepId] ?? dr.columnDefinitions;
@@ -3568,9 +3657,40 @@ class SkillExecutor {
3568
3657
  ...drAny,
3569
3658
  metadataConfig: drAny.metadataConfig || (Array.isArray(drAny.metadataFields) ? { fields: drAny.metadataFields } : undefined),
3570
3659
  };
3571
- return (0, dataContract_1.displayResultToEnvelope)(drForEnvelope, result.skillId, explicitColumns);
3660
+ return SkillExecutor.attachTraceProvenanceToEnvelope(SkillExecutor.attachIdentityResolutionToEnvelope((0, dataContract_1.displayResultToEnvelope)(drForEnvelope, result.skillId, explicitColumns), result.identityResolution), provenance);
3572
3661
  });
3573
3662
  }
3663
+ static attachTraceProvenanceToEnvelope(envelope, provenance) {
3664
+ if (!provenance?.traceId && !provenance?.traceSide)
3665
+ return envelope;
3666
+ return {
3667
+ ...envelope,
3668
+ meta: {
3669
+ ...envelope.meta,
3670
+ ...(provenance.traceId && !envelope.meta.traceId ? { traceId: provenance.traceId } : {}),
3671
+ ...(provenance.traceSide && !envelope.meta.traceSide ? { traceSide: provenance.traceSide } : {}),
3672
+ },
3673
+ };
3674
+ }
3675
+ static attachIdentityResolutionToEnvelope(envelope, identityResolution) {
3676
+ if (!identityResolution)
3677
+ return envelope;
3678
+ const traceSide = identityResolution.target.traceSide === 'current' || identityResolution.target.traceSide === 'reference'
3679
+ ? identityResolution.target.traceSide
3680
+ : undefined;
3681
+ return {
3682
+ ...envelope,
3683
+ meta: {
3684
+ ...envelope.meta,
3685
+ ...(!envelope.meta.traceId ? { traceId: identityResolution.target.traceId } : {}),
3686
+ ...(traceSide && !envelope.meta.traceSide ? { traceSide } : {}),
3687
+ identityRefId: identityResolution.identityRefId,
3688
+ identityStatus: identityResolution.status,
3689
+ identityWarnings: identityResolution.warnings,
3690
+ identityResolution,
3691
+ },
3692
+ };
3693
+ }
3574
3694
  /**
3575
3695
  * 检查数据是否是迭代器结果
3576
3696
  */