chainlesschain 0.166.65 → 0.166.68

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 (198) hide show
  1. package/README.md +20 -12
  2. package/package.json +4 -4
  3. package/src/assets/web-panel/assets/{AIOps-Byz17CTN.js → AIOps-CXkSNOGY.js} +1 -1
  4. package/src/assets/web-panel/assets/{ActionButton-C5LiW2-J.js → ActionButton-ysMR6gTs.js} +1 -1
  5. package/src/assets/web-panel/assets/{Analytics-D1INcvZF.js → Analytics-WGZ0sWuw.js} +3 -3
  6. package/src/assets/web-panel/assets/{AppLayout-DZzHO1VV.js → AppLayout-Cs2iRlQG.js} +4 -4
  7. package/src/assets/web-panel/assets/{Artifacts-WfYQL6Ia.js → Artifacts-5IdfxWz0.js} +1 -1
  8. package/src/assets/web-panel/assets/{Audit-DohBoGWO.js → Audit-U9V434QX.js} +1 -1
  9. package/src/assets/web-panel/assets/{BackgroundAgents-Chtk-Hde.js → BackgroundAgents-BvFwxPlC.js} +1 -1
  10. package/src/assets/web-panel/assets/{Backup-B813PuMz.js → Backup-C9yTr9hO.js} +1 -1
  11. package/src/assets/web-panel/assets/{BaseInput-DaDdWWgK.js → BaseInput-BdsSwUgE.js} +1 -1
  12. package/src/assets/web-panel/assets/{Chat-D4pJ6oZ7.js → Chat-BB_2oBgH.js} +5 -5
  13. package/src/assets/web-panel/assets/ChatBubbleRenderer-Bpf1hDUl.js +1 -0
  14. package/src/assets/web-panel/assets/{Checkbox-Clo9TvO6.js → Checkbox-v6M5m7dK.js} +1 -1
  15. package/src/assets/web-panel/assets/{Codegen-uejLg8Ih.js → Codegen-CtouWSIz.js} +1 -1
  16. package/src/assets/web-panel/assets/{Col-B7nbx-iJ.js → Col-CqQJ4ORW.js} +1 -1
  17. package/src/assets/web-panel/assets/{Community-FEyjPK1j.js → Community-BO__QCOy.js} +1 -1
  18. package/src/assets/web-panel/assets/{Compact-B6Fk0Kn6.js → Compact-D0Kq4xlH.js} +1 -1
  19. package/src/assets/web-panel/assets/{Compliance-BQG8goUl.js → Compliance-BSLKKBjA.js} +1 -1
  20. package/src/assets/web-panel/assets/{Cowork-CbBeEfHp.js → Cowork-VsujXW5o.js} +3 -3
  21. package/src/assets/web-panel/assets/{Cron-DPzlFcEZ.js → Cron-j8DbLGi5.js} +2 -2
  22. package/src/assets/web-panel/assets/{Crosschain-B8pWJrbg.js → Crosschain-DWpYH1yN.js} +1 -1
  23. package/src/assets/web-panel/assets/{DID-gGQHUlFN.js → DID-mLaRxLQh.js} +2 -2
  24. package/src/assets/web-panel/assets/{Dashboard-C2TMFHrn.js → Dashboard-Cff033Jr.js} +2 -2
  25. package/src/assets/web-panel/assets/{Dropdown-BVPxGbll.js → Dropdown-B1Upt6fP.js} +1 -1
  26. package/src/assets/web-panel/assets/{EmailListRenderer-CNPxs0hd.js → EmailListRenderer-CPtb8joV.js} +1 -1
  27. package/src/assets/web-panel/assets/{EvolutionSettings-_XTiB7q1.js → EvolutionSettings-CVh4Uv4g.js} +1 -1
  28. package/src/assets/web-panel/assets/{FamilyGuardDashboard-UyE3VWtI.js → FamilyGuardDashboard-CrD1PhbF.js} +1 -1
  29. package/src/assets/web-panel/assets/{Federation-CLt6FHK-.js → Federation-ftxrvqW5.js} +1 -1
  30. package/src/assets/web-panel/assets/{FormItemContext-CdNQPRPw.js → FormItemContext-9O80slC1.js} +1 -1
  31. package/src/assets/web-panel/assets/{GenericCardRenderer-BJ0AMhrh.js → GenericCardRenderer-DaYvYIj9.js} +1 -1
  32. package/src/assets/web-panel/assets/{Git-CQnvMfOM.js → Git-BKZh0YE5.js} +2 -2
  33. package/src/assets/web-panel/assets/{Governance-deYsHC-o.js → Governance-vWbN873j.js} +1 -1
  34. package/src/assets/web-panel/assets/{Inference-qaSck43z.js → Inference-BN6RR-l8.js} +1 -1
  35. package/src/assets/web-panel/assets/{KnowledgeGraph-De0aJ3Ls.js → KnowledgeGraph-x49x9m7Q.js} +1 -1
  36. package/src/assets/web-panel/assets/Logs-Co2EPLsJ.js +2 -0
  37. package/src/assets/web-panel/assets/MarkdownRenderer-D7wIB-c7.js +1 -0
  38. package/src/assets/web-panel/assets/{Marketplace-Byz3xCBN.js → Marketplace-DpPu6XQp.js} +1 -1
  39. package/src/assets/web-panel/assets/{McpTools-DOZUUW6z.js → McpTools-BR0ksiax.js} +3 -3
  40. package/src/assets/web-panel/assets/{Memory-C33wC2hA.js → Memory-BXznJ5-C.js} +2 -2
  41. package/src/assets/web-panel/assets/{MobileBridge-zZe-T_6M.js → MobileBridge-BHSOpfv7.js} +1 -1
  42. package/src/assets/web-panel/assets/{MobileProjects-CRnUIume.js → MobileProjects-DdWmgIup.js} +1 -1
  43. package/src/assets/web-panel/assets/{Mtc-C1xlRVAN.js → Mtc-D9Rk_IGT.js} +5 -5
  44. package/src/assets/web-panel/assets/{MtcAudit-D0U07bIi.js → MtcAudit--i8q1lKc.js} +2 -2
  45. package/src/assets/web-panel/assets/{Multisig-DF8uvV3h.js → Multisig-BHnNG7R9.js} +3 -3
  46. package/src/assets/web-panel/assets/{NLProgramming-bBPGAFlt.js → NLProgramming-Duo1ij2_.js} +1 -1
  47. package/src/assets/web-panel/assets/{Notes-BHAaOsgg.js → Notes-B44Le73p.js} +3 -3
  48. package/src/assets/web-panel/assets/{NotificationSettings-Cl0fG_rA.js → NotificationSettings-C3oy_7Gf.js} +1 -1
  49. package/src/assets/web-panel/assets/{OrderTableRenderer-BEPAs8Zv.js → OrderTableRenderer-Da_73SI5.js} +1 -1
  50. package/src/assets/web-panel/assets/{Organization-BAxSwgk5.js → Organization-ChsSwKxT.js} +4 -4
  51. package/src/assets/web-panel/assets/{Overflow-D68KubAu.js → Overflow-DR5G_cCn.js} +1 -1
  52. package/src/assets/web-panel/assets/{P2P-bhdT17zk.js → P2P-yfaobqow.js} +2 -2
  53. package/src/assets/web-panel/assets/PdhVaultBrowser-DgimH6Jp.js +7 -0
  54. package/src/assets/web-panel/assets/{Permissions-Bq8fvkak.js → Permissions-DhinFvtE.js} +4 -4
  55. package/src/assets/web-panel/assets/{PersonalDataHub-BYd2JEic.js → PersonalDataHub-CfeNVic1.js} +5 -5
  56. package/src/assets/web-panel/assets/{Pipeline-Csg_ja69.js → Pipeline-CGKO26Nk.js} +1 -1
  57. package/src/assets/web-panel/assets/{Privacy-lwxwLj4M.js → Privacy-CxxfYEJh.js} +1 -1
  58. package/src/assets/web-panel/assets/{ProjectInit-BdBZkH8z.js → ProjectInit-CZsaAab9.js} +2 -2
  59. package/src/assets/web-panel/assets/{ProjectSettings-ClWgFy-K.js → ProjectSettings-BUm_6clQ.js} +2 -2
  60. package/src/assets/web-panel/assets/{Projects-Bu-qj8N1.js → Projects-Capr8bVq.js} +1 -1
  61. package/src/assets/web-panel/assets/{Providers-DEjxrxw3.js → Providers-D28VqPja.js} +1 -1
  62. package/src/assets/web-panel/assets/{QrScannerModal-eccy-8Vi.js → QrScannerModal-Cj200vUb.js} +1 -1
  63. package/src/assets/web-panel/assets/{QuickAsk-Vx3uDvFg.js → QuickAsk-BGpnEiam.js} +1 -1
  64. package/src/assets/web-panel/assets/{Recommend-CfUivNps.js → Recommend-Ix79Tpni.js} +1 -1
  65. package/src/assets/web-panel/assets/{RemoteSession-BU4gk7GI.js → RemoteSession-BdGAFbIk.js} +3 -3
  66. package/src/assets/web-panel/assets/{Reputation-CbPzdZ0C.js → Reputation-B1Lis0Wk.js} +1 -1
  67. package/src/assets/web-panel/assets/{Row-CYLrgfKA.js → Row-Ba_okwOW.js} +1 -1
  68. package/src/assets/web-panel/assets/{RssFeed-DbY1oyuv.js → RssFeed-DDbEuI-m.js} +3 -3
  69. package/src/assets/web-panel/assets/{Search-QeW41K5r.js → Search-D89wAkMy.js} +1 -1
  70. package/src/assets/web-panel/assets/{Security-CJxf1kLZ.js → Security-CJKCKAU-.js} +3 -3
  71. package/src/assets/web-panel/assets/{Services-CFO9ySZc.js → Services-mitEc1XV.js} +2 -2
  72. package/src/assets/web-panel/assets/{Skeleton-CQFjeQN0.js → Skeleton-CnBjLDfX.js} +1 -1
  73. package/src/assets/web-panel/assets/{Skills-CLLB4INW.js → Skills-DSzDYvH3.js} +1 -1
  74. package/src/assets/web-panel/assets/{Sla-DxeLIJk0.js → Sla-CglJ_4p3.js} +1 -1
  75. package/src/assets/web-panel/assets/SpeechSettings-BicWJS7f.js +1 -0
  76. package/src/assets/web-panel/assets/{SyncSettings-C6NOkcQK.js → SyncSettings-Cq7o6fmr.js} +2 -2
  77. package/src/assets/web-panel/assets/{Tasks-LmVPWDfQ.js → Tasks-DOxFOBpU.js} +1 -1
  78. package/src/assets/web-panel/assets/{Templates-BdEfUoVB.js → Templates-bY0wSbQM.js} +1 -1
  79. package/src/assets/web-panel/assets/{Tenant-IUlESacN.js → Tenant-BAyyl0qX.js} +1 -1
  80. package/src/assets/web-panel/assets/{Terminal-B9pDe7sn.js → Terminal-BGBhSpqc.js} +2 -2
  81. package/src/assets/web-panel/assets/{TimelineRenderer-ZCwB-Pki.js → TimelineRenderer-BvW5lXYz.js} +1 -1
  82. package/src/assets/web-panel/assets/{Tokens-4qk16LX1.js → Tokens-Ua_LIx8-.js} +1 -1
  83. package/src/assets/web-panel/assets/{Trigger-jXNyargn.js → Trigger-BGwb2KL1.js} +1 -1
  84. package/src/assets/web-panel/assets/{Trust-D13PydtT.js → Trust-CD2IEHvj.js} +1 -1
  85. package/src/assets/web-panel/assets/{UkeySign-yPgws6mS.js → UkeySign-D5LetK6P.js} +1 -1
  86. package/src/assets/web-panel/assets/{VideoEditing-B329WjpG.js → VideoEditing-oP7ehFgR.js} +1 -1
  87. package/src/assets/web-panel/assets/{Wallet-T8VM-Ttm.js → Wallet-BBtu4-xa.js} +4 -4
  88. package/src/assets/web-panel/assets/{WebAuthn-XuRibrpP.js → WebAuthn-iSPRU4Ht.js} +5 -5
  89. package/src/assets/web-panel/assets/{WorkflowEditor-D1Gwz3YR.js → WorkflowEditor-DuEDhQmB.js} +1 -1
  90. package/src/assets/web-panel/assets/{chat-DjydtnT-.js → chat-DGDgqvvm.js} +1 -1
  91. package/src/assets/web-panel/assets/{colors-gFtBvPrr.js → colors-DGQMWa1-.js} +1 -1
  92. package/src/assets/web-panel/assets/{compact-item-CndxhGfx.js → compact-item-COVznBL4.js} +1 -1
  93. package/src/assets/web-panel/assets/{createContext-DnfGpd0L.js → createContext-DIxVeHXI.js} +1 -1
  94. package/src/assets/web-panel/assets/devWarning-CjR9h-Z_.js +1 -0
  95. package/src/assets/web-panel/assets/{hasIn-CmT5hRVW.js → hasIn-DkxZO3E9.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-BGlmPbl_.js → index-0ToBFsvW.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-BsRKmb6k.js → index-2JZizEPc.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-C14jryXi.js → index-BAL2p7YC.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-B0WFjxWs.js → index-BAlrovUm.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-BlTcxT_L.js → index-BBw2MLIe.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-DjcR-CwS.js → index-BHH95jcm.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-DreYqebI.js → index-BOTshZNx.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-DaEPE2DC.js → index-BQm7ntcn.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-BNHdO6Jr.js → index-BUqwlzc8.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-C3HvYeA3.js → index-BY6MSbWT.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-DUlubR4l.js → index-BY9Ossof.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-Dbpk75MO.js → index-BgM-3a1w.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-CqpR0Des.js → index-Bv0_u0ze.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-DjY-3sMA.js → index-C3XeNS82.js} +3 -3
  110. package/src/assets/web-panel/assets/{index-DV6NrfJx.js → index-C3bN6751.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-DuAvYTmY.js → index-CNRRrP3-.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-BW3nWiu0.js → index-CV0KnNqR.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-CZLDbPTa.js → index-CcNGQWum.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-D5na0B7G.js → index-Ci34vbh0.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-DoBKSzqu.js → index-ClQVcrFt.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-CuOx4Pbe.js → index-Cligb-Dl.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-CgMKElUh.js → index-CokrhbY2.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-BFif4Cev.js → index-CpZxDiVK.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-HHP1zzo7.js → index-CyMHF2Bi.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-_-wGLtAg.js → index-DDwPBGdA.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-ktN-K1Tf.js → index-DU1ArKl5.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-C4Mqhmas.js → index-DV0H83eS.js} +1 -1
  123. package/src/assets/web-panel/assets/index-D_nxBMX5.js +1 -0
  124. package/src/assets/web-panel/assets/{index-BXNUTiW8.js → index-DaWQSp5a.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-DKyuE_Y2.js → index-DmduvOYT.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-DV2PR3Fa.js → index-ECoDhyH3.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-BVM_w30N.js → index-ZcqTvPnt.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-CRqz8TtI.js → index-b2_M6o20.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-CB27echm.js → index-b_0qTo8O.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-D88-8bsB.js → index-dfYkGovV.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-DGbKeg8G.js → index-jo7DbU0w.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-D2d7358Y.js → index-usmG13jq.js} +1 -1
  133. package/src/assets/web-panel/assets/{index-zQf599Uq.js → index-vXrktF3e.js} +1 -1
  134. package/src/assets/web-panel/assets/index-z_cTUMX-.js +1 -0
  135. package/src/assets/web-panel/assets/{initDefaultProps-KV3V-PNH.js → initDefaultProps-CkSeiBwL.js} +1 -1
  136. package/src/assets/web-panel/assets/{motion-PFGQg7_X.js → motion-CSzhDP0s.js} +1 -1
  137. package/src/assets/web-panel/assets/{move-Dnl79wq4.js → move-mgCt4iC6.js} +1 -1
  138. package/src/assets/web-panel/assets/{mtc-parser-Bwl5JH9V.js → mtc-parser-BEZBLcKt.js} +1 -1
  139. package/src/assets/web-panel/assets/{omit-DCcTtM1l.js → omit-BsHctMEr.js} +1 -1
  140. package/src/assets/web-panel/assets/{pickAttrs-Cl6BjjDf.js → pickAttrs-1BHamnGW.js} +1 -1
  141. package/src/assets/web-panel/assets/{placementArrow-fdqhyo42.js → placementArrow--Vb4Bd7l.js} +1 -1
  142. package/src/assets/web-panel/assets/{responsiveObserve-DYQpmcDW.js → responsiveObserve-DD33SqCm.js} +1 -1
  143. package/src/assets/web-panel/assets/{slide-C4l-VfO4.js → slide-DfrLtxgK.js} +1 -1
  144. package/src/assets/web-panel/assets/{statusUtils-DYDw_dyZ.js → statusUtils-D9Pe_gXW.js} +1 -1
  145. package/src/assets/web-panel/assets/{styleChecker-BEsubSMu.js → styleChecker-0NY5iMun.js} +1 -1
  146. package/src/assets/web-panel/assets/{useFlexGapSupport-Cj82ggQ_.js → useFlexGapSupport-DSsZstwg.js} +1 -1
  147. package/src/assets/web-panel/assets/{useFs-B7L1eJ0V.js → useFs-BU8HyH59.js} +1 -1
  148. package/src/assets/web-panel/assets/{usePersonalDataHub-DVlJVD4d.js → usePersonalDataHub-D_xttink.js} +1 -1
  149. package/src/assets/web-panel/assets/{vnode-BBAbRN_Y.js → vnode-39VhX2lM.js} +1 -1
  150. package/src/assets/web-panel/assets/{zoom-BYn48q-I.js → zoom-D5KQ8Pks.js} +1 -1
  151. package/src/assets/web-panel/index.html +1 -1
  152. package/src/data/changelog.json +20 -7
  153. package/src/lib/dependency-install-policy.js +1 -1
  154. package/src/lib/evolution/browser-download-action-authority.js +747 -0
  155. package/src/lib/evolution/browser-download-artifact-disposal-authority.js +436 -0
  156. package/src/lib/evolution/browser-filesystem-quarantine-custody.js +2453 -0
  157. package/src/lib/evolution/browser-filesystem-quarantine-disposal.js +36 -0
  158. package/src/lib/evolution/browser-keyboard-action-authority.js +560 -0
  159. package/src/lib/evolution/browser-navigation-action-authority.js +546 -0
  160. package/src/lib/evolution/browser-quarantine-lock-maintenance-authority.js +573 -0
  161. package/src/lib/evolution/browser-quarantine-operator-revocation-authority.js +442 -0
  162. package/src/lib/evolution/browser-quarantine-retention-authority.js +503 -0
  163. package/src/lib/evolution/browser-quarantine-retention-scheduler.js +207 -0
  164. package/src/lib/evolution/browser-quarantined-download-executor.js +525 -0
  165. package/src/lib/evolution/browser-tab-open-action-authority.js +491 -0
  166. package/src/lib/evolution/browser-vision-action-authority.js +444 -0
  167. package/src/lib/evolution/browser-vision-observation-authority.js +304 -0
  168. package/src/lib/evolution/evolution-deployment-loader.js +202 -1
  169. package/src/lib/evolution/evolution-eval-child-evidence-ledger-adapter.js +5 -0
  170. package/src/lib/evolution/evolution-eval-gate.js +2 -1
  171. package/src/lib/evolution/evolution-eval-process-supervisor-worker.mjs +71 -9
  172. package/src/lib/evolution/evolution-eval-process-supervisor.js +276 -9
  173. package/src/lib/evolution/evolution-workbench-metrics.js +81 -21
  174. package/src/lib/evolution/pm-exploration-benchmark.js +747 -0
  175. package/src/lib/evolution/pm-exploration-budget-executor.js +106 -9
  176. package/src/lib/evolution/pm-exploration-egress-authority.js +382 -0
  177. package/src/lib/evolution/pm-exploration-evidence-bundle.js +149 -44
  178. package/src/lib/evolution/pm-exploration-execution-host.js +1254 -8
  179. package/src/lib/evolution/pm-exploration-process-grader.js +458 -0
  180. package/src/lib/evolution/pm-exploration-process-reviewer.js +456 -0
  181. package/src/lib/evolution/pm-exploration-process-runner.js +500 -0
  182. package/src/lib/evolution/pm-exploration-receipts.js +211 -11
  183. package/src/lib/evolution/pm-exploration-recovery-snapshot-store.js +465 -46
  184. package/src/lib/evolution/pm-exploration-transition-committer.js +185 -34
  185. package/src/lib/evolution/skill-outcome-index-authority.js +7 -3
  186. package/src/lib/governance-coverage.js +1 -1
  187. package/src/lib/headless-manifest.js +1 -1
  188. package/src/lib/protocol-replay.js +1 -1
  189. package/src/lib/skill-outcome-transcript-authority.js +45 -5
  190. package/src/runtime/agent-core.js +17 -0
  191. package/src/assets/web-panel/assets/ChatBubbleRenderer-Cf3LLgDc.js +0 -1
  192. package/src/assets/web-panel/assets/Logs-ZtS98jCm.js +0 -2
  193. package/src/assets/web-panel/assets/MarkdownRenderer-CTsYo9NN.js +0 -1
  194. package/src/assets/web-panel/assets/PdhVaultBrowser-DqaO6wgH.js +0 -7
  195. package/src/assets/web-panel/assets/SpeechSettings-D4FA9KYI.js +0 -1
  196. package/src/assets/web-panel/assets/devWarning-D60SbiD-.js +0 -1
  197. package/src/assets/web-panel/assets/index-C0yR4_7h.js +0 -1
  198. package/src/assets/web-panel/assets/index-D4xuvo03.js +0 -1
@@ -7,6 +7,8 @@ export const PM_EXPLORATION_SUCCESS_TRANSITION_SCHEMA =
7
7
  "chainlesschain.desktop-pm-state-transition-success/v1";
8
8
  export const PM_EXPLORATION_FAILED_TRANSITION_SCHEMA =
9
9
  "chainlesschain.desktop-pm-failed-execution-evidence/v1";
10
+ export const PM_EXPLORATION_CLONE_RECOVERY_EVENT_SCHEMA =
11
+ "chainlesschain.desktop-pm-clone-recovery-event/v1";
10
12
  export const PM_EXPLORATION_TRANSITION_DURABILITY_ACK_SCHEMA =
11
13
  "chainlesschain.pm-exploration-transition-durability-ack/v1";
12
14
  export const PM_EXPLORATION_SNAPSHOT_BOUND_TRANSITION_DURABILITY_ACK_SCHEMA =
@@ -15,6 +17,8 @@ export const PM_EXPLORATION_TRANSITION_RECOVERY_REQUEST_SCHEMA =
15
17
  "chainlesschain.pm-exploration-transition-recovery-request/v1";
16
18
  export const PM_EXPLORATION_TRANSITION_RECOVERY_SCHEMA =
17
19
  "chainlesschain.pm-exploration-transition-recovery/v1";
20
+ export const PM_EXPLORATION_SNAPSHOT_BOUND_TRANSITION_RECOVERY_SCHEMA =
21
+ "chainlesschain.pm-exploration-transition-recovery/v2";
18
22
 
19
23
  const DATABASE_SEAL_SCHEMA =
20
24
  "chainlesschain.desktop-pm-database-pre-run-seal/v1";
@@ -285,6 +289,106 @@ function failedTransition(value, expectedManifestDigest) {
285
289
  return deepFreeze({ ...core, evidenceDigest });
286
290
  }
287
291
 
292
+ function cloneRecoveryEvent(value, expectedManifestDigest) {
293
+ exact(
294
+ value,
295
+ [
296
+ "schema",
297
+ "manifestDigest",
298
+ "cloneIdentityDigest",
299
+ "sourceTransitionRevision",
300
+ "sourceFailureEvidenceDigest",
301
+ "previousStateTransitionDigest",
302
+ "recoverySnapshotAckDigest",
303
+ "restoredDatabaseSealDigest",
304
+ "restoredWorkspaceSealDigest",
305
+ "switchReceiptDigest",
306
+ "authenticated",
307
+ "durable",
308
+ "qualifiesForPromotion",
309
+ "recoveryEventDigest",
310
+ ],
311
+ "PM clone recovery event",
312
+ );
313
+ if (
314
+ value.schema !== PM_EXPLORATION_CLONE_RECOVERY_EVENT_SCHEMA ||
315
+ value.manifestDigest !== expectedManifestDigest ||
316
+ !Number.isSafeInteger(value.sourceTransitionRevision) ||
317
+ value.sourceTransitionRevision < 1 ||
318
+ value.authenticated !== false ||
319
+ value.durable !== false ||
320
+ value.qualifiesForPromotion !== false
321
+ ) {
322
+ throw new Error("PM clone recovery event fields are invalid");
323
+ }
324
+ const core = {
325
+ schema: value.schema,
326
+ manifestDigest: digest(value.manifestDigest, "manifestDigest"),
327
+ cloneIdentityDigest: digest(
328
+ value.cloneIdentityDigest,
329
+ "cloneIdentityDigest",
330
+ ),
331
+ sourceTransitionRevision: value.sourceTransitionRevision,
332
+ sourceFailureEvidenceDigest: digest(
333
+ value.sourceFailureEvidenceDigest,
334
+ "sourceFailureEvidenceDigest",
335
+ ),
336
+ previousStateTransitionDigest: optionalDigest(
337
+ value.previousStateTransitionDigest,
338
+ "previousStateTransitionDigest",
339
+ ),
340
+ recoverySnapshotAckDigest: digest(
341
+ value.recoverySnapshotAckDigest,
342
+ "recoverySnapshotAckDigest",
343
+ ),
344
+ restoredDatabaseSealDigest: digest(
345
+ value.restoredDatabaseSealDigest,
346
+ "restoredDatabaseSealDigest",
347
+ ),
348
+ restoredWorkspaceSealDigest: digest(
349
+ value.restoredWorkspaceSealDigest,
350
+ "restoredWorkspaceSealDigest",
351
+ ),
352
+ switchReceiptDigest: digest(
353
+ value.switchReceiptDigest,
354
+ "switchReceiptDigest",
355
+ ),
356
+ authenticated: false,
357
+ durable: false,
358
+ qualifiesForPromotion: false,
359
+ };
360
+ const recoveryEventDigest = digest(
361
+ value.recoveryEventDigest,
362
+ "recoveryEventDigest",
363
+ );
364
+ if (
365
+ recoveryEventDigest !==
366
+ hash(PM_EXPLORATION_CLONE_RECOVERY_EVENT_SCHEMA, core)
367
+ ) {
368
+ throw new Error("PM clone recovery event digest mismatch");
369
+ }
370
+ return deepFreeze({ ...core, recoveryEventDigest });
371
+ }
372
+
373
+ function transitionBinding(evidence) {
374
+ if (evidence.schema === PM_EXPLORATION_SUCCESS_TRANSITION_SCHEMA) {
375
+ return Object.freeze({
376
+ transitionKind: "success",
377
+ evidenceDigest: evidence.stateTransitionDigest,
378
+ });
379
+ }
380
+ if (evidence.schema === PM_EXPLORATION_FAILED_TRANSITION_SCHEMA) {
381
+ return Object.freeze({
382
+ transitionKind: "failure",
383
+ evidenceDigest: evidence.evidenceDigest,
384
+ });
385
+ }
386
+ return Object.freeze({
387
+ transitionKind: "recovery",
388
+ evidenceDigest: evidence.recoveryEventDigest,
389
+ });
390
+ }
391
+
288
392
  export function verifyPmExplorationTransitionEvidence(
289
393
  value,
290
394
  expectedManifestDigest,
@@ -305,6 +409,8 @@ export function verifyPmExplorationTransitionEvidence(
305
409
  return successTransition(value, manifestDigest);
306
410
  if (schema.value === PM_EXPLORATION_FAILED_TRANSITION_SCHEMA)
307
411
  return failedTransition(value, manifestDigest);
412
+ if (schema.value === PM_EXPLORATION_CLONE_RECOVERY_EVENT_SCHEMA)
413
+ return cloneRecoveryEvent(value, manifestDigest);
308
414
  throw new TypeError("PM transition evidence schema is invalid");
309
415
  }
310
416
 
@@ -370,34 +476,67 @@ function durabilityAck(value, binding) {
370
476
  }
371
477
 
372
478
  function transitionRecovery(value, expectedManifestDigest) {
479
+ const schemaDescriptor =
480
+ value &&
481
+ typeof value === "object" &&
482
+ !Array.isArray(value) &&
483
+ !isProxy(value) &&
484
+ Object.getPrototypeOf(value) === Object.prototype
485
+ ? Object.getOwnPropertyDescriptor(value, "schema")
486
+ : null;
487
+ const snapshotBound =
488
+ schemaDescriptor &&
489
+ "value" in schemaDescriptor &&
490
+ schemaDescriptor.value ===
491
+ PM_EXPLORATION_SNAPSHOT_BOUND_TRANSITION_RECOVERY_SCHEMA;
373
492
  exact(
374
493
  value,
375
- [
376
- "schema",
377
- "authenticated",
378
- "durable",
379
- "readbackVerified",
380
- "manifestDigest",
381
- "revision",
382
- "transitionKind",
383
- "evidenceDigest",
384
- "evidence",
385
- "ledgerHeadDigest",
386
- "ledgerEventDigest",
387
- "durabilityReceiptDigest",
388
- "qualifiesForPromotion",
389
- ],
494
+ snapshotBound
495
+ ? [
496
+ "schema",
497
+ "authenticated",
498
+ "durable",
499
+ "readbackVerified",
500
+ "manifestDigest",
501
+ "revision",
502
+ "transitionKind",
503
+ "evidenceDigest",
504
+ "evidence",
505
+ "recoverySnapshot",
506
+ "ledgerHeadDigest",
507
+ "ledgerEventDigest",
508
+ "durabilityReceiptDigest",
509
+ "qualifiesForPromotion",
510
+ ]
511
+ : [
512
+ "schema",
513
+ "authenticated",
514
+ "durable",
515
+ "readbackVerified",
516
+ "manifestDigest",
517
+ "revision",
518
+ "transitionKind",
519
+ "evidenceDigest",
520
+ "evidence",
521
+ "ledgerHeadDigest",
522
+ "ledgerEventDigest",
523
+ "durabilityReceiptDigest",
524
+ "qualifiesForPromotion",
525
+ ],
390
526
  "PM transition recovery",
391
527
  );
392
528
  if (
393
- value.schema !== PM_EXPLORATION_TRANSITION_RECOVERY_SCHEMA ||
529
+ ![
530
+ PM_EXPLORATION_TRANSITION_RECOVERY_SCHEMA,
531
+ PM_EXPLORATION_SNAPSHOT_BOUND_TRANSITION_RECOVERY_SCHEMA,
532
+ ].includes(value.schema) ||
394
533
  value.authenticated !== true ||
395
534
  value.durable !== true ||
396
535
  value.readbackVerified !== true ||
397
536
  value.manifestDigest !== expectedManifestDigest ||
398
537
  !Number.isSafeInteger(value.revision) ||
399
538
  value.revision < 0 ||
400
- ![null, "success", "failure"].includes(value.transitionKind) ||
539
+ ![null, "success", "failure", "recovery"].includes(value.transitionKind) ||
401
540
  !DIGEST.test(value.ledgerHeadDigest ?? "") ||
402
541
  value.qualifiesForPromotion !== false
403
542
  ) {
@@ -405,6 +544,7 @@ function transitionRecovery(value, expectedManifestDigest) {
405
544
  }
406
545
  if (value.transitionKind === null) {
407
546
  if (
547
+ snapshotBound ||
408
548
  value.revision !== 0 ||
409
549
  value.evidenceDigest !== null ||
410
550
  value.evidence !== null ||
@@ -427,21 +567,34 @@ function transitionRecovery(value, expectedManifestDigest) {
427
567
  value.evidence,
428
568
  expectedManifestDigest,
429
569
  );
430
- const transitionKind =
431
- evidence.schema === PM_EXPLORATION_SUCCESS_TRANSITION_SCHEMA
432
- ? "success"
433
- : "failure";
434
- const evidenceDigest =
435
- transitionKind === "success"
436
- ? evidence.stateTransitionDigest
437
- : evidence.evidenceDigest;
570
+ const { transitionKind, evidenceDigest } = transitionBinding(evidence);
438
571
  if (
439
572
  value.transitionKind !== transitionKind ||
440
573
  value.evidenceDigest !== evidenceDigest
441
574
  ) {
442
575
  throw new Error("PM transition recovery evidence binding is invalid");
443
576
  }
444
- return deepFreeze({ ...value, evidence });
577
+ if (snapshotBound && transitionKind === "recovery") {
578
+ throw new Error(
579
+ "PM clone recovery event cannot carry a transition recovery snapshot",
580
+ );
581
+ }
582
+ const recoverySnapshot = snapshotBound
583
+ ? verifyPmExplorationRecoverySnapshotAck(value.recoverySnapshot, {
584
+ manifestDigest: expectedManifestDigest,
585
+ transitionKind,
586
+ evidenceDigest,
587
+ sealDigest:
588
+ transitionKind === "success"
589
+ ? evidence.postRunSeal.sealDigest
590
+ : evidence.preRunSeal.sealDigest,
591
+ })
592
+ : null;
593
+ return deepFreeze({
594
+ ...value,
595
+ evidence,
596
+ ...(snapshotBound ? { recoverySnapshot } : {}),
597
+ });
445
598
  }
446
599
 
447
600
  export function createPmExplorationTransitionCommitter(input = {}) {
@@ -493,14 +646,12 @@ export function capturePmExplorationTransitionCommitter(value) {
493
646
  input,
494
647
  captured.manifestDigest,
495
648
  );
496
- const transitionKind =
497
- evidence.schema === PM_EXPLORATION_SUCCESS_TRANSITION_SCHEMA
498
- ? "success"
499
- : "failure";
500
- const evidenceDigest =
501
- transitionKind === "success"
502
- ? evidence.stateTransitionDigest
503
- : evidence.evidenceDigest;
649
+ const { transitionKind, evidenceDigest } = transitionBinding(evidence);
650
+ if (transitionKind === "recovery" && recoverySnapshotInput !== null) {
651
+ throw new Error(
652
+ "PM clone recovery event cannot retain another recovery snapshot",
653
+ );
654
+ }
504
655
  const recoverySnapshot =
505
656
  recoverySnapshotInput === null
506
657
  ? null
@@ -1,6 +1,9 @@
1
1
  import { createHash } from "node:crypto";
2
2
 
3
- import { verifyEvolutionWorkbenchMetricsSnapshot } from "./evolution-workbench-metrics.js";
3
+ import {
4
+ EVOLUTION_WORKBENCH_METRICS_SNAPSHOT_SCHEMA,
5
+ verifyEvolutionWorkbenchMetricsSnapshot,
6
+ } from "./evolution-workbench-metrics.js";
4
7
  import { isEvolutionWorkbenchMetricsOutcomeReader } from "./evolution-workbench-metrics-ledger-adapter.js";
5
8
 
6
9
  export const SKILL_OUTCOME_INDEX_AUTHORITY_SCHEMA =
@@ -96,8 +99,9 @@ function inspectSource(adapter) {
96
99
  descriptor,
97
100
  );
98
101
  if (
99
- snapshot.outcomeHistoryComplete !== true &&
100
- snapshot.versions.length !== 0
102
+ snapshot.versions.length !== 0 &&
103
+ (snapshot.schema !== EVOLUTION_WORKBENCH_METRICS_SNAPSHOT_SCHEMA ||
104
+ snapshot.outcomeHistoryComplete !== true)
101
105
  ) {
102
106
  throw unavailable(
103
107
  "Skill outcome index requires a complete outcome backfill",
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Governance coverage metrics — the last open item of P1-9 ("覆盖率指标") in
3
- * docs/CLAUDE_CODE_IDE_INCREMENTAL_GAP_ANALYSIS_2026-07-13.md, and the
3
+ * docs/research/ide/CLAUDE_CODE_IDE_INCREMENTAL_GAP_ANALYSIS_2026-07-13.md, and the
4
4
  * computation behind two §11.3 acceptance targets:
5
5
  *
6
6
  * - "高风险 Tool Call Ledger/Trace 覆盖率:100%"
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Deterministic-headless manifest helpers (gap-analysis 2026-07-11,
3
- * docs/CLAUDE_CODE_CLI_GAP_ANALYSIS.md P0 "确定性 Headless").
3
+ * docs/research/cli/CLAUDE_CODE_CLI_GAP_ANALYSIS.md P0 "确定性 Headless").
4
4
  *
5
5
  * The stream-json init event carries a protocol version, whether this run
6
6
  * persists its session, which ambient customization sources are live, and
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Offline protocol replay — the last open pure item of P1-9 ("离线协议回放") in
3
- * docs/CLAUDE_CODE_IDE_INCREMENTAL_GAP_ANALYSIS_2026-07-13.md.
3
+ * docs/research/ide/CLAUDE_CODE_IDE_INCREMENTAL_GAP_ANALYSIS_2026-07-13.md.
4
4
  *
5
5
  * [[event-seq-replay.js]] replays for TRANSPORT reliability (re-send a gap over a
6
6
  * lossy socket). This module replays for PROTOCOL COMPAT: take a recorded
@@ -7,10 +7,15 @@ import {
7
7
  } from "../harness/jsonl-session-store.js";
8
8
  import { canonicalJson } from "./scheduler-kernel/contract.js";
9
9
 
10
- const { verifySkillInvocationReceipt } = skillInvocationReceipt;
10
+ const {
11
+ inspectSkillInvocationReceiptCompatibility,
12
+ verifySkillInvocationReceipt,
13
+ } = skillInvocationReceipt;
11
14
 
12
- export const SKILL_OUTCOME_AUTHORITY_SCHEMA =
15
+ export const LEGACY_SKILL_OUTCOME_AUTHORITY_SCHEMA =
13
16
  "chainlesschain.skill-outcome-transcript-authority/v1";
17
+ export const SKILL_OUTCOME_AUTHORITY_SCHEMA =
18
+ "chainlesschain.skill-outcome-transcript-authority/v2";
14
19
  export const MAX_OUTCOME_AUTHORITY_SESSIONS = 128;
15
20
  export const MAX_OUTCOME_AUTHORITY_RECEIPTS = 10_000;
16
21
 
@@ -103,13 +108,16 @@ export function buildSkillOutcomeTranscriptAuthority(
103
108
  options.maxReceipts === undefined
104
109
  ? MAX_OUTCOME_AUTHORITY_RECEIPTS
105
110
  : Number(options.maxReceipts);
111
+ const expectedEnvironmentDigest = options.expectedEnvironmentDigest ?? null;
106
112
  if (
107
113
  !Number.isSafeInteger(maxSessions) ||
108
114
  maxSessions < 1 ||
109
115
  maxSessions > MAX_OUTCOME_AUTHORITY_SESSIONS ||
110
116
  !Number.isSafeInteger(maxReceipts) ||
111
117
  maxReceipts < 1 ||
112
- maxReceipts > MAX_OUTCOME_AUTHORITY_RECEIPTS
118
+ maxReceipts > MAX_OUTCOME_AUTHORITY_RECEIPTS ||
119
+ (expectedEnvironmentDigest !== null &&
120
+ !DIGEST.test(expectedEnvironmentDigest))
113
121
  ) {
114
122
  throw new TypeError("Skill outcome authority bounds are invalid");
115
123
  }
@@ -170,8 +178,30 @@ export function buildSkillOutcomeTranscriptAuthority(
170
178
  const totals = new Map();
171
179
  let attributionEligibleReceiptCount = 0;
172
180
  let outcomeEligibleReceiptCount = 0;
181
+ let legacyEnvironmentUnboundReceiptCount = 0;
182
+ let staleEnvironmentReceiptCount = 0;
183
+ let incompleteAttributionReceiptCount = 0;
173
184
  for (const receipt of uniqueReceipts.values()) {
174
- if (receipt.attributionEligible !== true) continue;
185
+ const compatibility = inspectSkillInvocationReceiptCompatibility(receipt, {
186
+ expectedEnvironmentDigest,
187
+ });
188
+ if (compatibility.legacyEnvironmentUnbound) {
189
+ legacyEnvironmentUnboundReceiptCount += 1;
190
+ } else if (!compatibility.environmentBoundAttributionEligible) {
191
+ incompleteAttributionReceiptCount += 1;
192
+ } else if (
193
+ expectedEnvironmentDigest !== null &&
194
+ !compatibility.currentEnvironmentEligible
195
+ ) {
196
+ staleEnvironmentReceiptCount += 1;
197
+ }
198
+ if (
199
+ !compatibility.environmentBoundAttributionEligible ||
200
+ (expectedEnvironmentDigest !== null &&
201
+ !compatibility.currentEnvironmentEligible)
202
+ ) {
203
+ continue;
204
+ }
175
205
  attributionEligibleReceiptCount += 1;
176
206
  const hasOutcomeEvidence =
177
207
  receipt.graderReceipts.length > 0 || receipt.userCorrectionRef !== null;
@@ -213,7 +243,12 @@ export function buildSkillOutcomeTranscriptAuthority(
213
243
  }))
214
244
  .sort((left, right) => left.sessionId.localeCompare(right.sessionId));
215
245
  const sourceDigest = `sha256:${createHash("sha256")
216
- .update(`${SKILL_OUTCOME_AUTHORITY_SCHEMA}\0${canonicalJson(source)}`)
246
+ .update(
247
+ `${SKILL_OUTCOME_AUTHORITY_SCHEMA}\0${canonicalJson({
248
+ source,
249
+ expectedEnvironmentDigest,
250
+ })}`,
251
+ )
217
252
  .digest("hex")}`;
218
253
  return Object.freeze({
219
254
  schema: SKILL_OUTCOME_AUTHORITY_SCHEMA,
@@ -228,6 +263,11 @@ export function buildSkillOutcomeTranscriptAuthority(
228
263
  uniqueReceiptCount: uniqueReceipts.size,
229
264
  attributionEligibleReceiptCount,
230
265
  outcomeEligibleReceiptCount,
266
+ legacyEnvironmentUnboundReceiptCount,
267
+ staleEnvironmentReceiptCount,
268
+ incompleteAttributionReceiptCount,
269
+ environmentPolicy:
270
+ expectedEnvironmentDigest === null ? "bound" : "current",
231
271
  duplicateReceiptCount,
232
272
  maxSessions,
233
273
  maxReceipts,
@@ -8259,6 +8259,22 @@ async function executeToolInner(
8259
8259
  }),
8260
8260
  )
8261
8261
  .digest("hex")}`;
8262
+ const invocationEnvironmentDigest =
8263
+ runtimeEligibility?.binding?.environmentDigest ||
8264
+ `sha256:${createHash("sha256")
8265
+ .update("chainlesschain.cli-skill-invocation-environment/v1\0")
8266
+ .update(
8267
+ JSON.stringify({
8268
+ node: process.versions.node,
8269
+ platform: process.platform,
8270
+ arch: process.arch,
8271
+ provider: llmOptions?.provider ?? null,
8272
+ model: llmOptions?.model ?? null,
8273
+ toolSetDigest,
8274
+ policyDigest,
8275
+ }),
8276
+ )
8277
+ .digest("hex")}`;
8262
8278
  const invocationStartedAt = Date.now();
8263
8279
  const invocationStart = startSkillInvocation({
8264
8280
  attributionRequired: ["automatic-candidate", "canary"].includes(
@@ -8282,6 +8298,7 @@ async function executeToolInner(
8282
8298
  toolSetDigest,
8283
8299
  osSandboxPermissionPolicyDigest: policyDigest,
8284
8300
  taskCohort: "cli:run_skill",
8301
+ environmentDigest: invocationEnvironmentDigest,
8285
8302
  });
8286
8303
  const settleInvocation = (executionStatus, result = {}) =>
8287
8304
  settleSkillInvocation(invocationStart, {
@@ -1 +0,0 @@
1
- import{I as v,P as u,J as S,U as n,R as a,S as y,K as C,Q as x,V as w,_ as B,b as s}from"./vendor-Bn1JzzAn.js";import{_ as k}from"./index-DjY-3sMA.js";import"./icons-DG5UD-6K.js";const N={__name:"ChatBubbleRenderer",props:{event:{type:Object,required:!0}},setup(c,{expose:d}){d();const t=c,r=s(()=>{const e=t.event.content||{};return e.text||e.body||e.message||e.title||JSON.stringify(e).slice(0,200)}),i=s(()=>{const e=t.event.content||{};return e.from||e.sender||e.senderName||t.event.actor||"(unknown)"}),l=s(()=>{const e=(t.event.actor||"").toLowerCase();return e.includes("self")||e==="me"||e.endsWith("_self")}),o=s(()=>{const e=t.event.source.adapter||"";return e.startsWith("messaging-qq")?"magenta":e==="wechat"?"green":"blue"}),m=s(()=>{if(!t.event.occurredAt)return"";try{const e=new Date(t.event.occurredAt),p=e.getFullYear(),f=String(e.getMonth()+1).padStart(2,"0"),g=String(e.getDate()).padStart(2,"0"),b=String(e.getHours()).padStart(2,"0"),h=String(e.getMinutes()).padStart(2,"0");return`${p}-${f}-${g} ${b}:${h}`}catch{return""}}),_={props:t,messageText:r,actorLabel:i,isMine:l,adapterColor:o,formattedTime:m,computed:s};return Object.defineProperty(_,"__isScriptSetup",{enumerable:!1,value:!0}),_}},T={class:"bubble"},L={class:"meta"},M={class:"actor"},R={class:"time"},V={class:"body"};function q(c,d,t,r,i,l){const o=v("a-tag");return u(),S("div",{class:B(["chat-row",{mine:r.isMine}])},[n("div",T,[n("div",L,[n("span",M,a(r.actorLabel),1),n("span",R,a(r.formattedTime),1)]),n("div",V,a(r.messageText),1),t.event.source.adapter?(u(),y(o,{key:0,class:"src",color:r.adapterColor},{default:C(()=>[x(a(t.event.source.adapter),1)]),_:1},8,["color"])):w("v-if",!0)])],2)}const A=k(N,[["render",q],["__scopeId","data-v-49238629"],["__file","/tmp/cc-web-panel-3f6YcL/repo/packages/web-panel/src/components/pdh/renderers/ChatBubbleRenderer.vue"]]);export{A as default};
@@ -1,2 +0,0 @@
1
- import{I as s,J as g,U as d,c as n,K as _,V as k,S as W,R as S,F as K,Z as Q,w as M,n as C,o as R,b as T,r,P as p,Q as O,_ as U}from"./vendor-Bn1JzzAn.js";import{_ as E,u as N}from"./index-DjY-3sMA.js";import{R as j}from"./icons-DG5UD-6K.js";const q={__name:"Logs",setup(V,{expose:a}){a();const x=N(),e=r("status"),y=r(!1),v=r(""),c=r(""),i=r(""),f=r(!0),o=r(null),h={status:"status",doctor:"doctor","skill-sources":"skill sources","llm-providers":"llm providers"},m=T(()=>c.value.split(`
2
- `)),b=T(()=>{if(!i.value)return m.value;const t=i.value.toLowerCase();return m.value.filter(u=>u.toLowerCase().includes(t))});function L(t){return t.includes("✖")||t.includes("error")||t.includes("Error")||t.includes("failed")?"line-error":t.includes("✔")||t.includes("✓")||t.includes("success")||t.includes("running")?"line-success":t.includes("warn")||t.includes("Warn")||t.includes("○")?"line-warn":t.startsWith(" ")||t.startsWith(" ")?"line-indent":""}function l(t){return t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function w(t){if(!i.value)return t;const u=i.value.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return t.replace(new RegExp(`(${u})`,"gi"),"<mark>$1</mark>")}async function B(){y.value=!0,v.value="",c.value="";const t=h[e.value]||"status";try{const{output:u}=await x.execute(t,3e4);c.value=u,f.value&&(await C(),o.value&&(o.value.scrollTop=o.value.scrollHeight))}catch(u){v.value=`执行失败: ${u.message}`,c.value=v.value}finally{y.value=!1}}M(b,async()=>{f.value&&(await C(),o.value&&(o.value.scrollTop=o.value.scrollHeight))}),R(B);const H={ws:x,activeTab:e,loading:y,error:v,rawOutput:c,searchQuery:i,autoScroll:f,logContainer:o,TAB_COMMANDS:h,allLines:m,filteredLines:b,lineClass:L,escapeHtml:l,highlightSearch:w,loadLog:B,ref:r,computed:T,watch:M,nextTick:C,onMounted:R,get ReloadOutlined(){return j},get useWsStore(){return N}};return Object.defineProperty(H,"__isScriptSetup",{enumerable:!1,value:!0}),H}},z={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},A={style:{display:"flex",gap:"10px",margin:"12px 0"}},D={ref:"logContainer",class:"log-box"},F={key:0,style:{"text-align":"center",padding:"40px",color:"var(--text-muted)"}},I={key:1,style:{"text-align":"center",padding:"40px",color:"var(--text-muted)"}},P={key:2},J=["innerHTML"];function Y(V,a,x,e,y,v){const c=s("a-checkbox"),i=s("a-button"),f=s("a-space"),o=s("a-tab-pane"),h=s("a-tabs"),m=s("a-input-search"),b=s("a-tag"),L=s("a-spin");return p(),g("div",null,[d("div",z,[a[5]||(a[5]=d("div",null,[d("h2",{class:"page-title"},"日志查看"),d("p",{class:"page-sub"},"系统运行日志与诊断输出")],-1)),n(f,null,{default:_(()=>[n(c,{checked:e.autoScroll,"onUpdate:checked":a[0]||(a[0]=l=>e.autoScroll=l)},{default:_(()=>[...a[3]||(a[3]=[O("自动滚动",-1)])]),_:1},8,["checked"]),n(i,{type:"primary",ghost:"",loading:e.loading,onClick:e.loadLog},{icon:_(()=>[n(e.ReloadOutlined)]),default:_(()=>[a[4]||(a[4]=O(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),k(" Tab Selector "),n(h,{activeKey:e.activeTab,"onUpdate:activeKey":a[1]||(a[1]=l=>e.activeTab=l),onChange:e.loadLog,style:{"margin-bottom":"0"}},{default:_(()=>[n(o,{key:"status",tab:"系统状态"}),n(o,{key:"doctor",tab:"环境诊断"}),n(o,{key:"skill-sources",tab:"技能来源"}),n(o,{key:"llm-providers",tab:"LLM 提供商"})]),_:1},8,["activeKey"]),k(" Search Bar "),d("div",A,[n(m,{value:e.searchQuery,"onUpdate:value":a[2]||(a[2]=l=>e.searchQuery=l),placeholder:"搜索日志内容...","allow-clear":"",style:{flex:"1"}},null,8,["value"]),e.filteredLines.length!==e.allLines.length?(p(),W(b,{key:0,color:"blue"},{default:_(()=>[O(S(e.filteredLines.length)+" / "+S(e.allLines.length)+" 行 ",1)]),_:1})):k("v-if",!0)]),k(" Log Output "),d("div",D,[e.loading?(p(),g("div",F,[n(L,{size:"large"}),a[6]||(a[6]=d("div",{style:{"margin-top":"10px"}},"加载中...",-1))])):e.filteredLines.length?(p(),g("div",P,[(p(!0),g(K,null,Q(e.filteredLines,(l,w)=>(p(),g("div",{key:w,class:U(["log-line",e.lineClass(l)]),innerHTML:e.highlightSearch(e.escapeHtml(l))},null,10,J))),128))])):(p(),g("div",I,S(e.error||"暂无日志内容,点击刷新加载"),1))],512)])}const $=E(q,[["render",Y],["__scopeId","data-v-8c2906e0"],["__file","/tmp/cc-web-panel-3f6YcL/repo/packages/web-panel/src/views/Logs.vue"]]);export{$ as default};
@@ -1 +0,0 @@
1
- import{P as a,J as p,b as c}from"./vendor-Bn1JzzAn.js";import{r as s}from"./markdown-Yo_c6Krv.js";import{_ as d}from"./index-DjY-3sMA.js";const _={__name:"MarkdownRenderer",props:{content:{type:String,default:""}},setup(t,{expose:o}){o();const e=t,r=c(()=>s(e.content||"")),n={props:e,rendered:r,computed:c,get renderMarkdown(){return s}};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}},i=["innerHTML"];function m(t,o,e,r,n,u){return a(),p("div",{class:"markdown-content",innerHTML:r.rendered},null,8,i)}const w=d(_,[["render",m],["__scopeId","data-v-0b0b9f63"],["__file","/tmp/cc-web-panel-3f6YcL/repo/packages/web-panel/src/components/MarkdownRenderer.vue"]]);export{w as M};
@@ -1,7 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./ChatBubbleRenderer-Cf3LLgDc.js","./vendor-Bn1JzzAn.js","./index-DjY-3sMA.js","./icons-DG5UD-6K.js","./index-Cq93VfoF.css","./ChatBubbleRenderer-gy5SDGw2.css","./OrderTableRenderer-BEPAs8Zv.js","./OrderTableRenderer-CfrDjSHT.css","./TimelineRenderer-ZCwB-Pki.js","./TimelineRenderer-BlTAtkOc.css","./EmailListRenderer-CNPxs0hd.js","./EmailListRenderer-DTPZPx_S.css","./GenericCardRenderer-BJ0AMhrh.js","./GenericCardRenderer-o85VDYQS.css"])))=>i.map(i=>d[i]);
2
- import{E as ue,r as R,b as w,I as g,P as u,J as O,U as v,c,S as C,V as E,_ as M,F as V,Z as se,a0 as ae,R as L,K as m,Q as b,W as A,o as J}from"./vendor-Bn1JzzAn.js";import{u as U}from"./usePersonalDataHub-DVlJVD4d.js";import{_ as D,e as F,d as P}from"./index-DjY-3sMA.js";import{aa as q,ag as Q,M as z,aI as Y,v as G,aH as H,aq as K,ac as W,e as de,d as fe,k as pe,ai as me,aA as _e,R as ye}from"./icons-DG5UD-6K.js";import"./useShellMode-CgR0wCYM.js";const I=Object.freeze({q:"",category:null,adapter:null,subtype:null,since:null,until:null}),B=50,Z=300,X=ue("pdhBrowser",()=>{const r=R({...I}),t=R([]),n=R(null),e=R(!1),o=R(!1),a=R(null),l=R(null),s=R(!1),i=R({byCategory:{},byAdapter:{},bySubtype:{},total:0});let d=0,_=null;const x=w(()=>t.value.length>0),j=w(()=>n.value!=null);function h(S={}){const p={},f=r.value;return f.q&&f.q.trim()&&(p.q=f.q.trim()),f.category&&(p.category=f.category),f.adapter&&(p.adapter=f.adapter),f.subtype&&(p.subtype=f.subtype),Number.isFinite(f.since)&&(p.since=f.since),Number.isFinite(f.until)&&(p.until=f.until),{...p,...S}}async function y(){const S=++d;e.value=!0,a.value=null;const p=U();try{const[f,T]=await Promise.all([p.searchEvents(h({limit:B})),p.facetCounts({...r.value.q&&r.value.q.trim()?{q:r.value.q.trim()}:{},...Number.isFinite(r.value.since)?{since:r.value.since}:{},...Number.isFinite(r.value.until)?{until:r.value.until}:{}})]);if(S!==d)return;t.value=f.rows||[],n.value=f.nextCursor||null,l.value=f.mode||"like",s.value=!!f.shortQuery,i.value={byCategory:T.byCategory||{},byAdapter:T.byAdapter||{},bySubtype:T.bySubtype||{},total:T.total||0}}catch(f){if(S!==d)return;a.value=f&&f.message?f.message:String(f),t.value=[],n.value=null}finally{S===d&&(e.value=!1)}}async function k(){if(!n.value||o.value)return;o.value=!0,a.value=null;const S=U();try{const p=await S.searchEvents(h({cursor:n.value,limit:B}));t.value=t.value.concat(p.rows||[]),n.value=p.nextCursor||null,l.value=p.mode||l.value}catch(p){a.value=p&&p.message?p.message:String(p)}finally{o.value=!1}}function le(S,p){if(!(S in I))throw new Error(`pdhBrowser.setFilter: unknown key "${S}"`);r.value={...r.value,[S]:p},_&&clearTimeout(_),_=setTimeout(()=>{_=null,y()},Z)}function ie(S){return r.value={...I,...S},_&&(clearTimeout(_),_=null),y()}function ce(){r.value={...I},t.value=[],n.value=null,a.value=null,i.value={byCategory:{},byAdapter:{},bySubtype:{},total:0}}return{filters:r,results:t,cursor:n,isLoading:e,isAppending:o,error:a,mode:l,shortQuery:s,facets:i,hasResults:x,canLoadMore:j,search:y,loadMore:k,setFilter:le,setFilters:ie,reset:ce,PAGE_SIZE:B,SEARCH_DEBOUNCE_MS:Z}}),ge=Object.freeze(["chat","social","email","shopping","travel","system","ai-chat","other"]),ve=Object.freeze({chat:"社交聊天",social:"内容平台",email:"邮件",shopping:"支付订单",travel:"出行",system:"系统数据","ai-chat":"AI 对话",other:"其他"});function N(r){return ve[r]||r||"未知"}const be=Object.freeze([["wechat","chat"],["messaging-","chat"],["social-","social"],["email-","email"],["shopping-","shopping"],["alipay-","shopping"],["travel-","travel"],["system-data","system"],["browser-","system"],["meeting-","system"],["vscode","system"],["vscodium","system"],["jetbrains-ide","system"],["win-recent","system"],["git-activity","system"],["shell-history","system"],["hbuilderx","system"],["local-files","system"],["cursor","ai-chat"],["claude-code","ai-chat"],["ai-chat-","ai-chat"]]);function $(r){if(typeof r!="string"||r.length===0)return"other";for(const[t,n]of be)if(t.endsWith("-")||t==="system-data"){if(r.startsWith(t))return n}else if(r===t)return n;return"other"}const he={__name:"CategorySidebar",props:{selected:{type:String,default:null},facets:{type:Object,default:()=>({byCategory:{},total:0})}},emits:["select"],setup(r,{expose:t}){t();const n=r,e=w(()=>n.facets.total||0),o={chat:W,social:K,email:H,shopping:G,travel:Y,system:z,"ai-chat":Q,other:q};function a(i){return o[i]||q}function l(i){return i?{backgroundColor:"#fff",color:"#1677ff"}:{backgroundColor:"#f0f0f0",color:"#666"}}const s={props:n,total:e,ICONS:o,iconFor:a,badgeStyle:l,computed:w,get AppstoreOutlined(){return q},get MessageOutlined(){return W},get PlayCircleOutlined(){return K},get MailOutlined(){return H},get ShoppingOutlined(){return G},get CarOutlined(){return Y},get MobileOutlined(){return z},get RobotOutlined(){return Q},get CATEGORIES(){return ge},get categoryLabel(){return N}};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}},Se={class:"pdh-sidebar"},Oe=["onClick"],we={class:"label"};function Ce(r,t,n,e,o,a){const l=g("a-badge");return u(),O("div",Se,[t[2]||(t[2]=v("div",{class:"sidebar-title"},"数据类型",-1)),v("div",{class:M(["cat-item",{active:n.selected===null}]),onClick:t[0]||(t[0]=s=>r.$emit("select",null))},[c(e.AppstoreOutlined,{class:"icon"}),t[1]||(t[1]=v("span",{class:"label"},"全部",-1)),e.total>0?(u(),C(l,{key:0,count:e.total,"number-style":e.badgeStyle(n.selected===null),"overflow-count":9999},null,8,["count","number-style"])):E("v-if",!0)],2),(u(!0),O(V,null,se(e.CATEGORIES,s=>(u(),O("div",{key:s,class:M(["cat-item",{active:n.selected===s,dim:!n.facets.byCategory[s]}]),onClick:i=>r.$emit("select",s)},[(u(),C(ae(e.iconFor(s)),{class:"icon"})),v("span",we,L(e.categoryLabel(s)),1),n.facets.byCategory[s]?(u(),C(l,{key:0,count:n.facets.byCategory[s],"number-style":e.badgeStyle(n.selected===s),"overflow-count":9999},null,8,["count","number-style"])):E("v-if",!0)],10,Oe))),128))])}const ke=D(he,[["render",Ce],["__scopeId","data-v-6b62a22e"],["__file","/tmp/cc-web-panel-3f6YcL/repo/packages/web-panel/src/components/pdh/CategorySidebar.vue"]]),Ee={__name:"SearchFilterBar",props:{filters:{type:Object,required:!0},facets:{type:Object,default:()=>({byAdapter:{}})},isLoading:{type:Boolean,default:!1},mode:{type:String,default:null},shortQuery:{type:Boolean,default:!1}},emits:["set-filter","reset"],setup(r,{expose:t,emit:n}){t();const e=r,o=n,a=w(()=>e.filters.category?`在「${e.filters.category}」类目内搜索…`:"搜索关键词(如:支付宝、罗技、Kotlin)…"),l=w(()=>Object.entries(e.facets.byAdapter||{}).sort((y,k)=>k[1]-y[1]).map(([y,k])=>({value:y,label:`${y} (${k})`}))),s=w(()=>!e.filters.since&&!e.filters.until?null:[e.filters.since?new Date(e.filters.since):null,e.filters.until?new Date(e.filters.until):null]),i=w(()=>!!(e.filters.q||e.filters.adapter||e.filters.subtype||e.filters.since||e.filters.until));function d(h){o("set-filter","q",h||"")}function _(h){o("set-filter","q",h||"")}function x(h){if(!h||h.length===0){o("set-filter","since",null),o("set-filter","until",null);return}const[y,k]=h;o("set-filter","since",y?+y:null),o("set-filter","until",k?+k:null)}const j={props:e,emit:o,placeholderText:a,adapterOptions:l,dateRangeValue:s,hasActiveFilters:i,onQInput:d,onSearch:_,onDateChange:x,computed:w,get SearchOutlined(){return pe},get CloseCircleOutlined(){return fe},get InfoCircleOutlined(){return de}};return Object.defineProperty(j,"__isScriptSetup",{enumerable:!1,value:!0}),j}},Re={class:"pdh-filter-bar"},Le={key:1,class:"hint"},xe={key:2,class:"hint"};function je(r,t,n,e,o,a){const l=g("a-input-search"),s=g("a-select"),i=g("a-range-picker"),d=g("a-button");return u(),O("div",Re,[c(l,{value:n.filters.q,placeholder:e.placeholderText,"enter-button":"搜索","allow-clear":"",loading:n.isLoading,style:{flex:"1","max-width":"480px"},"onUpdate:value":e.onQInput,onSearch:e.onSearch},{prefix:m(()=>[c(e.SearchOutlined)]),_:1},8,["value","placeholder","loading"]),c(s,{value:n.filters.adapter,placeholder:"所有 adapter","allow-clear":"",options:e.adapterOptions,style:{width:"200px"},"onUpdate:value":t[0]||(t[0]=_=>r.$emit("set-filter","adapter",_||null))},null,8,["value","options"]),c(i,{value:e.dateRangeValue,placeholder:["开始日期","结束日期"],style:{width:"280px"},"onUpdate:value":e.onDateChange},null,8,["value"]),e.hasActiveFilters?(u(),C(d,{key:0,type:"link",danger:"",onClick:t[1]||(t[1]=_=>r.$emit("reset"))},{icon:m(()=>[c(e.CloseCircleOutlined)]),default:m(()=>[t[2]||(t[2]=b(" 清空筛选 ",-1))]),_:1})):E("v-if",!0),n.shortQuery?(u(),O("span",Le,[c(e.InfoCircleOutlined),t[3]||(t[3]=b(" 关键词需至少 3 字 (FTS5 trigram 限制) ",-1))])):n.mode==="like"?(u(),O("span",xe,[c(e.InfoCircleOutlined),t[4]||(t[4]=b(" 当前为 LIKE 兜底模式 ",-1))])):E("v-if",!0)])}const Ae=D(Ee,[["render",je],["__scopeId","data-v-d7cce6e9"],["__file","/tmp/cc-web-panel-3f6YcL/repo/packages/web-panel/src/components/pdh/SearchFilterBar.vue"]]),Fe={__name:"RendererDispatcher",props:{event:{type:Object,required:!0}},setup(r,{expose:t}){t();const n=A(()=>F(()=>import("./ChatBubbleRenderer-Cf3LLgDc.js"),__vite__mapDeps([0,1,2,3,4,5]),import.meta.url)),e=A(()=>F(()=>import("./OrderTableRenderer-BEPAs8Zv.js"),__vite__mapDeps([6,1,2,3,4,7]),import.meta.url)),o=A(()=>F(()=>import("./TimelineRenderer-ZCwB-Pki.js"),__vite__mapDeps([8,1,2,3,4,9]),import.meta.url)),a=A(()=>F(()=>import("./EmailListRenderer-CNPxs0hd.js"),__vite__mapDeps([10,1,2,3,4,11]),import.meta.url)),l=A(()=>F(()=>import("./GenericCardRenderer-BJ0AMhrh.js"),__vite__mapDeps([12,1,2,3,4,13]),import.meta.url));function s(d){const _=d&&d.source&&d.source.adapter;switch($(_)){case"chat":case"ai-chat":return n;case"shopping":return e;case"travel":return o;case"email":return a;default:return l}}const i={ChatBubbleRenderer:n,OrderTableRenderer:e,TimelineRenderer:o,EmailListRenderer:a,GenericCardRenderer:l,rendererFor:s,defineAsyncComponent:A,get getCategory(){return $}};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}};function De(r,t,n,e,o,a){return u(),C(ae(e.rendererFor(n.event)),{event:n.event},null,8,["event"])}const Te=D(Fe,[["render",De],["__file","/tmp/cc-web-panel-3f6YcL/repo/packages/web-panel/src/components/pdh/renderers/RendererDispatcher.vue"]]);function ee(r){return JSON.stringify(r,null,2)}function te(r){return r.map(t=>JSON.stringify(t)).join(`
3
- `)+`
4
- `}function ne(r){const n=["id","subtype","occurredAt","occurredAtIso","actor","place","adapter","summary","contentJson","extraJson"].join(","),e=r.map(o=>{const a=Number.isFinite(o.occurredAt)?o.occurredAt:null,l=a?new Date(a).toISOString():"",s=o.source&&o.source.adapter||"",i=o.content&&(o.content.text||o.content.title||o.content.subject)||"";return[o.id||"",o.subtype||"",a!=null?String(a):"",l,o.actor||"",o.place||"",s,i,o.content?JSON.stringify(o.content):"",o.extra?JSON.stringify(o.extra):""].map(Ie).join(",")});return[n,...e].join(`
5
- `)+`
6
- `}function Ie(r){const t=String(r??"");return t.includes(",")||t.includes('"')||t.includes(`
7
- `)||t.includes("\r")?'"'+t.replace(/"/g,'""')+'"':t}function re(r,t,n="application/octet-stream"){if(typeof window>"u"||typeof document>"u")return t;const e=new Blob([r],{type:n}),o=URL.createObjectURL(e),a=document.createElement("a");return a.href=o,a.download=t,document.body.appendChild(a),a.click(),document.body.removeChild(a),setTimeout(()=>URL.revokeObjectURL(o),1e3),t}function oe(r,t=null){const n=new Date,e=n.getFullYear(),o=String(n.getMonth()+1).padStart(2,"0"),a=String(n.getDate()).padStart(2,"0"),l=r==="ndjson"?"ndjson":r,s=t?`-${t}`:"";return`pdh-events-${e}-${o}-${a}${s}.${l}`}const Pe={__name:"ExportDropdown",props:{events:{type:Array,required:!0},category:{type:String,default:null}},setup(r,{expose:t}){t();const n=r,e=w(()=>n.events.length>0),o={json:"application/json;charset=utf-8",ndjson:"application/x-ndjson;charset=utf-8",csv:"text/csv;charset=utf-8"};function a(i){switch(i){case"json":return ee(n.events);case"ndjson":return te(n.events);case"csv":return ne(n.events);default:throw new Error(`unknown format: ${i}`)}}function l({key:i}){try{const d=a(i),_=oe(i,n.category);re(d,_,o[i]),P.success(`已导出 ${n.events.length} 条到 ${_}`)}catch(d){P.error(`导出失败: ${d.message||d}`)}}const s={props:n,hasResults:e,MIME:o,serialize:a,onClick:l,computed:w,get DownloadOutlined(){return _e},get DownOutlined(){return me},get message(){return P},get eventsToJson(){return ee},get eventsToNdjson(){return te},get eventsToCsv(){return ne},get downloadAs(){return re},get suggestFilename(){return oe}};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}};function qe(r,t,n,e,o,a){const l=g("a-button"),s=g("a-menu-item"),i=g("a-menu"),d=g("a-dropdown");return u(),C(d,{disabled:!e.hasResults},{overlay:m(()=>[c(i,{onClick:e.onClick},{default:m(()=>[c(s,{key:"json"},{default:m(()=>[...t[0]||(t[0]=[b("JSON (.json)",-1)])]),_:1}),c(s,{key:"ndjson"},{default:m(()=>[...t[1]||(t[1]=[b("NDJSON (.ndjson)",-1)])]),_:1}),c(s,{key:"csv"},{default:m(()=>[...t[2]||(t[2]=[b("CSV (.csv)",-1)])]),_:1})]),_:1})]),default:m(()=>[c(l,{disabled:!e.hasResults},{icon:m(()=>[c(e.DownloadOutlined)]),default:m(()=>[b(" 导出 ("+L(n.events.length)+") ",1),c(e.DownOutlined)]),_:1},8,["disabled"])]),_:1},8,["disabled"])}const Be=D(Pe,[["render",qe],["__file","/tmp/cc-web-panel-3f6YcL/repo/packages/web-panel/src/components/pdh/ExportDropdown.vue"]]),Ve={__name:"PdhVaultBrowser",setup(r,{expose:t}){t();const n=X(),e=w(()=>n.filters.q?`没有匹配 "${n.filters.q}" 的事件 — 试试更短的关键词或换个类目`:n.filters.category?`「${N(n.filters.category)}」类目下还没有数据 — 去采集页同步对应 adapter`:"Vault 里还没有数据 — 去「个人数据中台」页面同步任意 adapter");function o(s){n.filters.category=s,n.search()}function a(s,i){n.setFilter(s,i)}J(()=>{!n.hasResults&&!n.isLoading&&n.search()});const l={store:n,emptyHint:e,onCategorySelect:o,onSetFilter:a,onMounted:J,computed:w,get ReloadOutlined(){return ye},get usePdhBrowserStore(){return X},get categoryLabel(){return N},CategorySidebar:ke,SearchFilterBar:Ae,RendererDispatcher:Te,ExportDropdown:Be};return Object.defineProperty(l,"__isScriptSetup",{enumerable:!1,value:!0}),l}},Ne={class:"pdh-browser-page"},Me={class:"page-header"},Je={class:"main-pane"},Ue={class:"results-summary"},Qe={key:0},ze={key:0},Ye={key:1},Ge={class:"loaded-of"},He={class:"results-list"},Ke={key:2,class:"load-more"};function We(r,t,n,e,o,a){const l=g("a-tag"),s=g("a-button"),i=g("a-space"),d=g("a-col"),_=g("a-spin"),x=g("a-alert"),j=g("a-empty"),h=g("a-row");return u(),O("div",Ne,[v("div",Me,[t[6]||(t[6]=v("div",null,[v("h2",{class:"page-title"},"数据浏览器"),v("p",{class:"page-sub"}," Vault 里所有已采集的数据,按类目浏览 / 全文检索 / 时间窗口筛选。 完全离线,不外传。 ")],-1)),c(i,null,{default:m(()=>[e.store.mode==="fts5"?(u(),C(l,{key:0,color:"green"},{default:m(()=>[...t[3]||(t[3]=[b("FTS5 trigram",-1)])]),_:1})):e.store.mode==="like"?(u(),C(l,{key:1,color:"orange"},{default:m(()=>[...t[4]||(t[4]=[b("LIKE 兜底",-1)])]),_:1})):E("v-if",!0),c(e.ExportDropdown,{events:e.store.results,category:e.store.filters.category},null,8,["events","category"]),c(s,{onClick:t[0]||(t[0]=y=>e.store.search()),loading:e.store.isLoading},{icon:m(()=>[c(e.ReloadOutlined)]),default:m(()=>[t[5]||(t[5]=b(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),c(h,{gutter:16,class:"browser-layout"},{default:m(()=>[c(d,{xs:24,sm:24,md:6,lg:5,xl:4},{default:m(()=>[c(e.CategorySidebar,{selected:e.store.filters.category,facets:e.store.facets,onSelect:e.onCategorySelect},null,8,["selected","facets"])]),_:1}),c(d,{xs:24,sm:24,md:18,lg:19,xl:20},{default:m(()=>[v("div",Je,[c(e.SearchFilterBar,{filters:e.store.filters,facets:e.store.facets,"is-loading":e.store.isLoading,mode:e.store.mode,"short-query":e.store.shortQuery,onSetFilter:e.onSetFilter,onReset:t[1]||(t[1]=y=>{e.store.reset(),e.store.search()})},null,8,["filters","facets","is-loading","mode","short-query"]),v("div",Ue,[e.store.isLoading&&e.store.results.length===0?(u(),O("span",Qe,[c(_,{size:"small"}),t[7]||(t[7]=b(" 载入中… ",-1))])):(u(),O(V,{key:1},[v("strong",null,L(e.store.facets.total),1),t[11]||(t[11]=b(" 条事件 ",-1)),e.store.filters.category?(u(),O("span",ze,[t[8]||(t[8]=b(" / 当前类目 ",-1)),v("strong",null,L(e.categoryLabel(e.store.filters.category)),1),v("strong",null,L(e.store.facets.byCategory[e.store.filters.category]||0),1)])):E("v-if",!0),e.store.filters.q?(u(),O("span",Ye,[t[9]||(t[9]=b(' / 关键词 "',-1)),v("em",null,L(e.store.filters.q),1),t[10]||(t[10]=b('"',-1))])):E("v-if",!0),v("span",Ge," / 已显示 "+L(e.store.results.length),1)],64))]),e.store.error?(u(),C(x,{key:0,type:"error","show-icon":"",message:e.store.error,closable:"",style:{margin:"12px 0"}},null,8,["message"])):E("v-if",!0),!e.store.isLoading&&e.store.results.length===0&&!e.store.error?(u(),C(j,{key:1,description:e.emptyHint,style:{"margin-top":"40px"}},null,8,["description"])):E("v-if",!0),v("div",He,[(u(!0),O(V,null,se(e.store.results,(y,k)=>(u(),C(e.RendererDispatcher,{key:`r-${k}-${y.id}`,event:y},null,8,["event"]))),128))]),e.store.canLoadMore?(u(),O("div",Ke,[c(s,{loading:e.store.isAppending,onClick:t[2]||(t[2]=y=>e.store.loadMore()),block:""},{default:m(()=>[...t[12]||(t[12]=[b(" 加载下一页 (50 条) ",-1)])]),_:1},8,["loading"])])):E("v-if",!0)])]),_:1})]),_:1})])}const nt=D(Ve,[["render",We],["__scopeId","data-v-0f7c02cd"],["__file","/tmp/cc-web-panel-3f6YcL/repo/packages/web-panel/src/views/PdhVaultBrowser.vue"]]);export{nt as default};
@@ -1 +0,0 @@
1
- import{I as u,J as j,U as b,R as c,c as a,K as i,a as R,r as k,o as F,b as E,P as O,Q as p,S as z,V as C}from"./vendor-Bn1JzzAn.js";import{t as M,_ as Q,b as K,u as T,d as S}from"./index-DjY-3sMA.js";import{i as Y,R as q}from"./icons-DG5UD-6K.js";const v=Object.freeze({defaultEngine:"webspeech",webSpeech:{lang:"zh-CN"},whisperAPI:{apiKey:"",baseURL:"https://api.openai.com/v1",model:"whisper-1",language:"zh",timeout:6e4},whisperLocal:{serverUrl:"http://localhost:8002",modelSize:"base",device:"auto",timeout:12e4}}),X=["webspeech","whisper-api","whisper-local"];function B(g,t){if(typeof g=="number"&&Number.isFinite(g))return g;const s=parseFloat(g);return Number.isFinite(s)?s:t}function Z(g){return JSON.parse(JSON.stringify(g))}function D(g){const t=Z(v);if(!g)return t;const s=g.trim();if(!s||/key not found/i.test(s))return t;const e=M(s);if(!e||typeof e!="object"||Array.isArray(e))return t;if(typeof e.defaultEngine=="string"&&X.includes(e.defaultEngine)&&(t.defaultEngine=e.defaultEngine),e.webSpeech&&typeof e.webSpeech=="object"&&typeof e.webSpeech.lang=="string"&&e.webSpeech.lang&&(t.webSpeech.lang=e.webSpeech.lang),e.whisperAPI&&typeof e.whisperAPI=="object"){const l=e.whisperAPI;typeof l.apiKey=="string"&&(t.whisperAPI.apiKey=l.apiKey),typeof l.baseURL=="string"&&l.baseURL&&(t.whisperAPI.baseURL=l.baseURL),typeof l.model=="string"&&l.model&&(t.whisperAPI.model=l.model),typeof l.language=="string"&&l.language&&(t.whisperAPI.language=l.language),l.timeout!==void 0&&(t.whisperAPI.timeout=B(l.timeout,v.whisperAPI.timeout))}if(e.whisperLocal&&typeof e.whisperLocal=="object"){const l=e.whisperLocal;typeof l.serverUrl=="string"&&l.serverUrl&&(t.whisperLocal.serverUrl=l.serverUrl),typeof l.modelSize=="string"&&l.modelSize&&(t.whisperLocal.modelSize=l.modelSize),typeof l.device=="string"&&l.device&&(t.whisperLocal.device=l.device),l.timeout!==void 0&&(t.whisperLocal.timeout=B(l.timeout,v.whisperLocal.timeout))}return t}function J(g,t){const s={};g.defaultEngine!==t.defaultEngine&&(s.defaultEngine=t.defaultEngine);for(const e of["webSpeech","whisperAPI","whisperLocal"]){const l=g[e]||{},w=t[e]||{};for(const o of Object.keys(v[e]))l[o]!==w[o]&&(s[`${e}.${o}`]=w[o])}return s}const $={__name:"SpeechSettings",setup(g,{expose:t}){t();const{t:s}=K(),e=T(),l=k(!1),w=k(!1),o=R(JSON.parse(JSON.stringify(v))),h=k(JSON.parse(JSON.stringify(v))),y=E(()=>[{value:"webspeech",label:s("speechSettings.engineOptions.webspeech")},{value:"whisper-api",label:s("speechSettings.engineOptions.whisper-api")},{value:"whisper-local",label:s("speechSettings.engineOptions.whisper-local")}]),f=E(()=>{const d=`speechSettings.engineHint.${o.defaultEngine}`,n=s(d);return n===d?"":n}),_=E(()=>Object.keys(J(h.value,o)).length>0);function m(d){o.defaultEngine=d.defaultEngine,Object.assign(o.webSpeech,d.webSpeech),Object.assign(o.whisperAPI,d.whisperAPI),Object.assign(o.whisperLocal,d.whisperLocal),h.value=JSON.parse(JSON.stringify(d))}async function r(){l.value=!0;try{const{output:d}=await e.execute("config get speech",1e4);m(D(d))}catch(d){/key not found/i.test(d.message)?m(JSON.parse(JSON.stringify(v))):S.error(s("speechSettings.messages.loadFailed",{err:d.message}))}finally{l.value=!1}}function N(){m(h.value)}async function L(){const d=J(h.value,o),n=Object.keys(d);if(n.length===0){S.info(s("speechSettings.messages.noChanges"));return}w.value=!0;let P=0,I=0;for(const A of n){const H=d[A],V=String(H).replace(/"/g,'\\"'),W=`config set speech.${A} "${V}"`;try{const{output:U,exitCode:G}=await e.execute(W,1e4);G!==0||/error|failed|失败/i.test(U)?(I++,S.error(s("speechSettings.messages.saveItemFailed",{key:A,err:U.slice(0,80)}))):P++}catch(U){I++,S.error(s("speechSettings.messages.saveItemFailed",{key:A,err:U.message}))}}w.value=!1,I===0?(S.success(s("speechSettings.messages.saveOk",{count:P})),h.value=JSON.parse(JSON.stringify(o))):P>0&&(S.warning(s("speechSettings.messages.savePartial",{ok:P,fail:I})),await r())}F(()=>{r()});const x={t:s,ws:e,loading:l,saving:w,form:o,baseline:h,engineOptions:y,engineHint:f,isDirty:_,applyConfig:m,loadConfig:r,resetForm:N,saveConfig:L,reactive:R,ref:k,computed:E,onMounted:F,get useI18n(){return K},get ReloadOutlined(){return q},get SoundOutlined(){return Y},get message(){return S},get useWsStore(){return T},get parseSpeechConfig(){return D},get diffSpeechConfig(){return J},get SPEECH_DEFAULTS(){return v}};return Object.defineProperty(x,"__isScriptSetup",{enumerable:!1,value:!0}),x}},ee={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},te={class:"page-title"},ae={class:"page-sub"},ie={style:{color:"var(--text-primary)"}},le={style:{color:"var(--text-muted)","font-size":"11px"}},ne={style:{color:"var(--text-primary)"}},se={style:{color:"var(--text-primary)"}},oe={style:{color:"var(--text-primary)"}},re={style:{display:"flex",gap:"12px","align-items":"center"}},de={key:0,style:{color:"#faad14","font-size":"12px"}};function pe(g,t,s,e,l,w){const o=u("a-button"),h=u("a-alert"),y=u("a-select"),f=u("a-form-item"),_=u("a-form"),m=u("a-card"),r=u("a-select-option"),N=u("a-input-password"),L=u("a-input"),x=u("a-input-number"),d=u("a-spin");return O(),j("div",null,[b("div",ee,[b("div",null,[b("h2",te,c(e.t("speechSettings.title")),1),b("p",ae,c(e.t("speechSettings.subtitle")),1)]),a(o,{loading:e.loading,onClick:e.loadConfig},{icon:i(()=>[a(e.ReloadOutlined)]),default:i(()=>[p(" "+c(e.t("speechSettings.refresh")),1)]),_:1},8,["loading"])]),a(h,{message:e.t("speechSettings.alert.message"),description:e.t("speechSettings.alert.description"),type:"info","show-icon":"",closable:"",style:{"margin-bottom":"16px"}},null,8,["message","description"]),a(d,{spinning:e.loading},{default:i(()=>[a(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{title:i(()=>[b("span",ie,[a(e.SoundOutlined,{style:{"margin-right":"8px"}}),p(c(e.t("speechSettings.engineCardTitle")),1)])]),default:i(()=>[a(_,{"label-col":{span:6},"wrapper-col":{span:18},style:{"max-width":"720px"}},{default:i(()=>[a(f,{label:e.t("speechSettings.engineLabel")},{extra:i(()=>[b("span",le,c(e.engineHint),1)]),default:i(()=>[a(y,{value:e.form.defaultEngine,"onUpdate:value":t[0]||(t[0]=n=>e.form.defaultEngine=n),style:{width:"320px"},disabled:e.saving,options:e.engineOptions},null,8,["value","disabled","options"])]),_:1},8,["label"])]),_:1})]),_:1}),e.form.defaultEngine==="webspeech"?(O(),z(m,{key:0,style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{title:i(()=>[b("span",ne,c(e.t("speechSettings.webSpeech.cardTitle")),1)]),default:i(()=>[a(_,{"label-col":{span:6},"wrapper-col":{span:18},style:{"max-width":"720px"}},{default:i(()=>[a(f,{label:e.t("speechSettings.webSpeech.langLabel")},{default:i(()=>[a(y,{value:e.form.webSpeech.lang,"onUpdate:value":t[1]||(t[1]=n=>e.form.webSpeech.lang=n),style:{width:"240px"},disabled:e.saving},{default:i(()=>[a(r,{value:"zh-CN"},{default:i(()=>[p(c(e.t("speechSettings.webSpeech.langOptions.zh-CN")),1)]),_:1}),a(r,{value:"zh-TW"},{default:i(()=>[p(c(e.t("speechSettings.webSpeech.langOptions.zh-TW")),1)]),_:1}),a(r,{value:"en-US"},{default:i(()=>[p(c(e.t("speechSettings.webSpeech.langOptions.en-US")),1)]),_:1}),a(r,{value:"en-GB"},{default:i(()=>[p(c(e.t("speechSettings.webSpeech.langOptions.en-GB")),1)]),_:1}),a(r,{value:"ja-JP"},{default:i(()=>[p(c(e.t("speechSettings.webSpeech.langOptions.ja-JP")),1)]),_:1}),a(r,{value:"ko-KR"},{default:i(()=>[p(c(e.t("speechSettings.webSpeech.langOptions.ko-KR")),1)]),_:1})]),_:1},8,["value","disabled"])]),_:1},8,["label"])]),_:1})]),_:1})):C("v-if",!0),e.form.defaultEngine==="whisper-api"?(O(),z(m,{key:1,style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{title:i(()=>[b("span",se,c(e.t("speechSettings.whisperAPI.cardTitle")),1)]),default:i(()=>[a(_,{"label-col":{span:6},"wrapper-col":{span:18},style:{"max-width":"720px"}},{default:i(()=>[a(f,{label:e.t("speechSettings.whisperAPI.apiKeyLabel")},{default:i(()=>[a(N,{value:e.form.whisperAPI.apiKey,"onUpdate:value":t[2]||(t[2]=n=>e.form.whisperAPI.apiKey=n),placeholder:"sk-...",disabled:e.saving},null,8,["value","disabled"])]),_:1},8,["label"]),a(f,{label:e.t("speechSettings.whisperAPI.baseUrlLabel")},{default:i(()=>[a(L,{value:e.form.whisperAPI.baseURL,"onUpdate:value":t[3]||(t[3]=n=>e.form.whisperAPI.baseURL=n),disabled:e.saving},null,8,["value","disabled"])]),_:1},8,["label"]),a(f,{label:e.t("speechSettings.whisperAPI.modelLabel")},{default:i(()=>[a(L,{value:e.form.whisperAPI.model,"onUpdate:value":t[4]||(t[4]=n=>e.form.whisperAPI.model=n),disabled:e.saving},null,8,["value","disabled"])]),_:1},8,["label"]),a(f,{label:e.t("speechSettings.whisperAPI.languageLabel")},{default:i(()=>[a(L,{value:e.form.whisperAPI.language,"onUpdate:value":t[5]||(t[5]=n=>e.form.whisperAPI.language=n),disabled:e.saving},null,8,["value","disabled"])]),_:1},8,["label"]),a(f,{label:e.t("speechSettings.whisperAPI.timeoutLabel")},{default:i(()=>[a(x,{value:e.form.whisperAPI.timeout,"onUpdate:value":t[6]||(t[6]=n=>e.form.whisperAPI.timeout=n),min:1e3,max:6e5,step:1e3,style:{width:"200px"},disabled:e.saving},null,8,["value","disabled"])]),_:1},8,["label"])]),_:1})]),_:1})):C("v-if",!0),e.form.defaultEngine==="whisper-local"?(O(),z(m,{key:2,style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{title:i(()=>[b("span",oe,c(e.t("speechSettings.whisperLocal.cardTitle")),1)]),default:i(()=>[a(_,{"label-col":{span:6},"wrapper-col":{span:18},style:{"max-width":"720px"}},{default:i(()=>[a(f,{label:e.t("speechSettings.whisperLocal.serverUrlLabel")},{default:i(()=>[a(L,{value:e.form.whisperLocal.serverUrl,"onUpdate:value":t[7]||(t[7]=n=>e.form.whisperLocal.serverUrl=n),placeholder:"http://localhost:8002",disabled:e.saving},null,8,["value","disabled"])]),_:1},8,["label"]),a(f,{label:e.t("speechSettings.whisperLocal.modelSizeLabel")},{default:i(()=>[a(y,{value:e.form.whisperLocal.modelSize,"onUpdate:value":t[8]||(t[8]=n=>e.form.whisperLocal.modelSize=n),style:{width:"180px"},disabled:e.saving},{default:i(()=>[a(r,{value:"tiny"},{default:i(()=>[...t[11]||(t[11]=[p("tiny",-1)])]),_:1}),a(r,{value:"base"},{default:i(()=>[...t[12]||(t[12]=[p("base",-1)])]),_:1}),a(r,{value:"small"},{default:i(()=>[...t[13]||(t[13]=[p("small",-1)])]),_:1}),a(r,{value:"medium"},{default:i(()=>[...t[14]||(t[14]=[p("medium",-1)])]),_:1}),a(r,{value:"large"},{default:i(()=>[...t[15]||(t[15]=[p("large",-1)])]),_:1})]),_:1},8,["value","disabled"])]),_:1},8,["label"]),a(f,{label:e.t("speechSettings.whisperLocal.deviceLabel")},{default:i(()=>[a(y,{value:e.form.whisperLocal.device,"onUpdate:value":t[9]||(t[9]=n=>e.form.whisperLocal.device=n),style:{width:"180px"},disabled:e.saving},{default:i(()=>[a(r,{value:"auto"},{default:i(()=>[...t[16]||(t[16]=[p("auto",-1)])]),_:1}),a(r,{value:"cpu"},{default:i(()=>[...t[17]||(t[17]=[p("cpu",-1)])]),_:1}),a(r,{value:"cuda"},{default:i(()=>[...t[18]||(t[18]=[p("cuda",-1)])]),_:1})]),_:1},8,["value","disabled"])]),_:1},8,["label"]),a(f,{label:e.t("speechSettings.whisperLocal.timeoutLabel")},{default:i(()=>[a(x,{value:e.form.whisperLocal.timeout,"onUpdate:value":t[10]||(t[10]=n=>e.form.whisperLocal.timeout=n),min:1e3,max:6e5,step:1e3,style:{width:"200px"},disabled:e.saving},null,8,["value","disabled"])]),_:1},8,["label"])]),_:1})]),_:1})):C("v-if",!0),b("div",re,[a(o,{onClick:e.resetForm,disabled:e.saving||e.loading},{default:i(()=>[p(c(e.t("speechSettings.buttons.reset")),1)]),_:1},8,["disabled"]),a(o,{type:"primary",loading:e.saving,disabled:!e.isDirty,onClick:e.saveConfig},{default:i(()=>[p(c(e.t("speechSettings.buttons.save")),1)]),_:1},8,["loading","disabled"]),e.isDirty?(O(),j("span",de,c(e.t("speechSettings.dirtyHint")),1)):C("v-if",!0)])]),_:1},8,["spinning"])])}const ue=Q($,[["render",pe],["__scopeId","data-v-2b18ccaa"],["__file","/tmp/cc-web-panel-3f6YcL/repo/packages/web-panel/src/views/SpeechSettings.vue"]]);export{ue as default};
@@ -1 +0,0 @@
1
- import{Q as r}from"./index-DjY-3sMA.js";const o=((n,a,e)=>{r(n,`[ant-design-vue: ${a}] ${e}`)});export{o as d};
@@ -1 +0,0 @@
1
- import{A as o}from"./Row-CYLrgfKA.js";import{a0 as t}from"./index-DjY-3sMA.js";import"./vendor-Bn1JzzAn.js";import"./responsiveObserve-DYQpmcDW.js";import"./useFlexGapSupport-Cj82ggQ_.js";import"./styleChecker-BEsubSMu.js";import"./index-C4Mqhmas.js";import"./icons-DG5UD-6K.js";const l=t(o);export{l as default};
@@ -1 +0,0 @@
1
- import{C as o}from"./Col-B7nbx-iJ.js";import{a0 as t}from"./index-DjY-3sMA.js";import"./vendor-Bn1JzzAn.js";import"./index-C4Mqhmas.js";import"./icons-DG5UD-6K.js";const s=t(o);export{s as default};