chainlesschain 0.166.88 → 0.166.89

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 (167) hide show
  1. package/README.md +16 -13
  2. package/package.json +1 -1
  3. package/src/assets/linux-subreaper/linux-arm64/manifest.json +1 -1
  4. package/src/assets/linux-subreaper/linux-x64/manifest.json +1 -1
  5. package/src/assets/web-panel/assets/{AIOps-QzeGep9J.js → AIOps-C8AkN9R5.js} +1 -1
  6. package/src/assets/web-panel/assets/{ActionButton-Dfc5bx7S.js → ActionButton-BrAzSQor.js} +1 -1
  7. package/src/assets/web-panel/assets/{Analytics-tn-_ZG2E.js → Analytics-Cu56X8Oh.js} +3 -3
  8. package/src/assets/web-panel/assets/{AppLayout-Deg3WAK8.js → AppLayout-BP1Riofl.js} +4 -4
  9. package/src/assets/web-panel/assets/{Artifacts-KU05t0a6.js → Artifacts-CIW-nNAz.js} +1 -1
  10. package/src/assets/web-panel/assets/{Audit-CkSZf54T.js → Audit-CJtDabk-.js} +1 -1
  11. package/src/assets/web-panel/assets/{BackgroundAgents-i7ivfXF0.js → BackgroundAgents-DYIHeQ_P.js} +1 -1
  12. package/src/assets/web-panel/assets/{Backup-QcVUKtf0.js → Backup-B4CsFzj7.js} +1 -1
  13. package/src/assets/web-panel/assets/{BaseInput-B3h5ZJ0g.js → BaseInput-3eoJ5kfb.js} +1 -1
  14. package/src/assets/web-panel/assets/{Chat-D7AVz0xi.js → Chat-BBhX2L_E.js} +5 -5
  15. package/src/assets/web-panel/assets/ChatBubbleRenderer-RN8cbv7w.js +1 -0
  16. package/src/assets/web-panel/assets/{Checkbox-H0p0TMlD.js → Checkbox-5UvmwHVk.js} +1 -1
  17. package/src/assets/web-panel/assets/{Codegen-B6HOmAY3.js → Codegen-BFy8zsBN.js} +1 -1
  18. package/src/assets/web-panel/assets/{Col-n_64Fog2.js → Col-4M6bKRRO.js} +1 -1
  19. package/src/assets/web-panel/assets/{Community-CX0JGgj0.js → Community-D6LC0j7_.js} +1 -1
  20. package/src/assets/web-panel/assets/{Compact-C4JWUZlx.js → Compact-Dd48xMcv.js} +1 -1
  21. package/src/assets/web-panel/assets/{Compliance-DKyTZakB.js → Compliance-Ba85ggmy.js} +1 -1
  22. package/src/assets/web-panel/assets/{Cowork-C0joBMci.js → Cowork-D1BXlkuK.js} +3 -3
  23. package/src/assets/web-panel/assets/{Cron-D6VkYpxK.js → Cron-Ca2Uy7Ia.js} +2 -2
  24. package/src/assets/web-panel/assets/{Crosschain-7b6Uu8jc.js → Crosschain-C2bDRXZg.js} +1 -1
  25. package/src/assets/web-panel/assets/{DID-C8YPKqzY.js → DID-DySZKAJf.js} +2 -2
  26. package/src/assets/web-panel/assets/{Dashboard-DJsOiEry.js → Dashboard-DDpYf-TT.js} +2 -2
  27. package/src/assets/web-panel/assets/{Dropdown-CyStFY-4.js → Dropdown-DGjROfPv.js} +1 -1
  28. package/src/assets/web-panel/assets/{EmailListRenderer-COrIx2Rg.js → EmailListRenderer-DxX9QYiB.js} +1 -1
  29. package/src/assets/web-panel/assets/{EvolutionSettings-DpxORusH.js → EvolutionSettings-TBCZyrSJ.js} +1 -1
  30. package/src/assets/web-panel/assets/{FamilyGuardDashboard-5BYZdMG0.js → FamilyGuardDashboard-BeqwTXBa.js} +1 -1
  31. package/src/assets/web-panel/assets/{Federation-s1kS0ekU.js → Federation-CiCpKJQ1.js} +1 -1
  32. package/src/assets/web-panel/assets/{FormItemContext-CmgoH9HV.js → FormItemContext-CdTmbLkU.js} +1 -1
  33. package/src/assets/web-panel/assets/{GenericCardRenderer-DSRWrvcL.js → GenericCardRenderer-BwbkEY-5.js} +1 -1
  34. package/src/assets/web-panel/assets/{Git-Cz3EgnS1.js → Git-VnAga2vv.js} +2 -2
  35. package/src/assets/web-panel/assets/{Governance-De4atTe7.js → Governance-i-4Ebs-H.js} +1 -1
  36. package/src/assets/web-panel/assets/{Inference-DoitBBxJ.js → Inference-CirjTgNw.js} +1 -1
  37. package/src/assets/web-panel/assets/{KnowledgeGraph-CIdmJ1pH.js → KnowledgeGraph-CunS7vhA.js} +1 -1
  38. package/src/assets/web-panel/assets/Logs-DBuTF0c6.js +2 -0
  39. package/src/assets/web-panel/assets/MarkdownRenderer-B-iE-tt_.js +1 -0
  40. package/src/assets/web-panel/assets/{Marketplace-C6kbAQoM.js → Marketplace-BK6ZivTS.js} +1 -1
  41. package/src/assets/web-panel/assets/{McpTools-C2TZn8D-.js → McpTools-CUnCRnd3.js} +3 -3
  42. package/src/assets/web-panel/assets/{Memory-DYdEKDuB.js → Memory-CBGGr8Gy.js} +2 -2
  43. package/src/assets/web-panel/assets/{MobileBridge-pKLeVviZ.js → MobileBridge-reB6iaWD.js} +1 -1
  44. package/src/assets/web-panel/assets/MobileProjects-o1YdVB7i.js +1 -0
  45. package/src/assets/web-panel/assets/{Mtc-IEoVRV29.js → Mtc-if5OE3GH.js} +2 -2
  46. package/src/assets/web-panel/assets/{MtcAudit-Cov-yYTY.js → MtcAudit-BTZWpq0j.js} +2 -2
  47. package/src/assets/web-panel/assets/{Multisig--Jr7OCmp.js → Multisig-8cvMAYFL.js} +3 -3
  48. package/src/assets/web-panel/assets/{NLProgramming-D2gXnYAA.js → NLProgramming-BMvUXAWo.js} +1 -1
  49. package/src/assets/web-panel/assets/{Notes-hk8pMyve.js → Notes-BWWjColh.js} +3 -3
  50. package/src/assets/web-panel/assets/{NotificationSettings-D26Nc7MU.js → NotificationSettings-Ccr4lIhS.js} +1 -1
  51. package/src/assets/web-panel/assets/{OrderTableRenderer-DmzHMEOa.js → OrderTableRenderer-DhksGy6D.js} +1 -1
  52. package/src/assets/web-panel/assets/{Organization-Cn-o6mHT.js → Organization-DciXQfdY.js} +4 -4
  53. package/src/assets/web-panel/assets/{Overflow-DP6xpDak.js → Overflow-8DR7uMSx.js} +1 -1
  54. package/src/assets/web-panel/assets/{P2P-C9WAjG-I.js → P2P-DE6euHYl.js} +2 -2
  55. package/src/assets/web-panel/assets/PdhVaultBrowser-ByuWoauq.js +7 -0
  56. package/src/assets/web-panel/assets/{Permissions-BFBN4-IL.js → Permissions-DkjM87ac.js} +3 -3
  57. package/src/assets/web-panel/assets/{PersonalDataHub-BEDvoAiz.js → PersonalDataHub-2DLp0KTL.js} +3 -3
  58. package/src/assets/web-panel/assets/{Pipeline-Co2Ze_rR.js → Pipeline-Ci2Qlkfr.js} +1 -1
  59. package/src/assets/web-panel/assets/{Privacy-BOTn1EId.js → Privacy-DlwDnDVA.js} +1 -1
  60. package/src/assets/web-panel/assets/{ProjectInit-CObyrZYm.js → ProjectInit-CmMifW39.js} +2 -2
  61. package/src/assets/web-panel/assets/{ProjectSettings-DVTN31rd.js → ProjectSettings-DJVFIh-6.js} +2 -2
  62. package/src/assets/web-panel/assets/{Projects-DQSEaVjE.js → Projects-P2nWBS70.js} +1 -1
  63. package/src/assets/web-panel/assets/{Providers-BRIKWIdQ.js → Providers-B2cxaGCU.js} +1 -1
  64. package/src/assets/web-panel/assets/{QrScannerModal-3nxaEXxN.js → QrScannerModal-CpO77kcE.js} +1 -1
  65. package/src/assets/web-panel/assets/{QuickAsk-iwZJEE9z.js → QuickAsk-BDQl1hb0.js} +1 -1
  66. package/src/assets/web-panel/assets/{Recommend-D2_EEbvc.js → Recommend-DTD2f3IN.js} +1 -1
  67. package/src/assets/web-panel/assets/{RemoteSession-S4w2mUfq.js → RemoteSession-DGZAnwvs.js} +2 -2
  68. package/src/assets/web-panel/assets/{Reputation-CstUvfTC.js → Reputation-B_R4vitb.js} +1 -1
  69. package/src/assets/web-panel/assets/{Row-DEGHFpxz.js → Row-4Jj6JyXN.js} +1 -1
  70. package/src/assets/web-panel/assets/{RssFeed-DGdZtJQl.js → RssFeed-D1t1MCZ-.js} +2 -2
  71. package/src/assets/web-panel/assets/{Search-DhfXi99U.js → Search-CyOUlIn7.js} +1 -1
  72. package/src/assets/web-panel/assets/{Security-BbzISrgX.js → Security-BmknPT5Q.js} +4 -4
  73. package/src/assets/web-panel/assets/{Services-CFjP2sQ3.js → Services-DkEK8mpa.js} +2 -2
  74. package/src/assets/web-panel/assets/{Skeleton-CFn5wbvm.js → Skeleton-Bvo5bpuk.js} +1 -1
  75. package/src/assets/web-panel/assets/{Skills-fVbT8RcW.js → Skills-AMmG8fim.js} +1 -1
  76. package/src/assets/web-panel/assets/{Sla-D6OtC0MT.js → Sla-Dl7-OKOV.js} +1 -1
  77. package/src/assets/web-panel/assets/{SpeechSettings-D0kteBjU.js → SpeechSettings-DtiGKu0E.js} +1 -1
  78. package/src/assets/web-panel/assets/{SyncSettings-BGEWCtPh.js → SyncSettings-Ch7mp3ES.js} +2 -2
  79. package/src/assets/web-panel/assets/{Tasks-B1xZUG4D.js → Tasks-Ck-sEgj-.js} +1 -1
  80. package/src/assets/web-panel/assets/{Templates-COlorjqb.js → Templates-BlV22Il8.js} +1 -1
  81. package/src/assets/web-panel/assets/{Tenant-yLkwfuo3.js → Tenant-CaaAu0mX.js} +1 -1
  82. package/src/assets/web-panel/assets/{Terminal-CAmkq1wf.js → Terminal-lA9g3FtJ.js} +2 -2
  83. package/src/assets/web-panel/assets/{TimelineRenderer-CcKYq1Ue.js → TimelineRenderer-CG26IFC3.js} +1 -1
  84. package/src/assets/web-panel/assets/{Tokens-9hIqn_LE.js → Tokens-iaJUBLBm.js} +1 -1
  85. package/src/assets/web-panel/assets/{Trigger-Dsdkb74C.js → Trigger-DWQJtLK3.js} +1 -1
  86. package/src/assets/web-panel/assets/{Trust-DC4GuE3C.js → Trust-CTjmUwqp.js} +1 -1
  87. package/src/assets/web-panel/assets/{UkeySign-CSlh00wf.js → UkeySign-CMnxufgD.js} +1 -1
  88. package/src/assets/web-panel/assets/{VideoEditing-QEWLo3QY.js → VideoEditing-diCFSWJw.js} +1 -1
  89. package/src/assets/web-panel/assets/{Wallet-BkPNQgmg.js → Wallet-Ba1oND1K.js} +3 -3
  90. package/src/assets/web-panel/assets/{WebAuthn-7---jCBl.js → WebAuthn-DZDqPS-S.js} +4 -4
  91. package/src/assets/web-panel/assets/{WorkflowEditor-Dq6Yiu8E.js → WorkflowEditor-CfN8fPMe.js} +1 -1
  92. package/src/assets/web-panel/assets/{chat-CTYIMpWD.js → chat-BiqMsO_i.js} +1 -1
  93. package/src/assets/web-panel/assets/{colors-C8JtYlDN.js → colors-By8LkjqH.js} +1 -1
  94. package/src/assets/web-panel/assets/{compact-item-spXpnsNC.js → compact-item-B0mxvRe3.js} +1 -1
  95. package/src/assets/web-panel/assets/{createContext-D04ewPuL.js → createContext-Li2ub348.js} +1 -1
  96. package/src/assets/web-panel/assets/devWarning-D90arbUg.js +1 -0
  97. package/src/assets/web-panel/assets/{hasIn-DZblOKXx.js → hasIn-DYbHPkbl.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-KIoJ2eCK.js → index-1lVoRUrQ.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-Bm0z1M6s.js → index-B0D0HkkM.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-Bw-3CtK2.js → index-BFhksbXp.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-B7RA974g.js → index-BRzewWeE.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-DwIEfKo7.js → index-BSk0xuXP.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-DcjouIsi.js → index-BZqTG7fP.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-COvZnoIg.js → index-Bc6bxU24.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-rVEqWa0_.js → index-BcOJEgBE.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-EM4_wLPi.js → index-Bd5znvCV.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-BSO33_O2.js → index-Bm2P2Kgp.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-DLUHbPl3.js → index-ByqFKMWL.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-Dcd-qZ68.js → index-C-RE3mFh.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-DSoyEHi2.js → index-C5Se6Lnv.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-Cz0gkRz_.js → index-CA0AOURT.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-Dssnz_1x.js → index-CEp_3fKJ.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-rU6_An6N.js → index-CGZzexNa.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-CE3TYhl0.js → index-CHgiSV6R.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-CLkua5sJ.js → index-CMh3VxgO.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-DHOV24VR.js → index-CTVPeUh3.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-B-cKXztT.js → index-CVZNYRzM.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-DtSzmzFF.js → index-CYv3JIzl.js} +1 -1
  119. package/src/assets/web-panel/assets/index-CeP1oROI.js +1 -0
  120. package/src/assets/web-panel/assets/{index-749P1pkM.js → index-CgyrklzQ.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-BOuUUW2U.js → index-ClsJN8sW.js} +3 -3
  122. package/src/assets/web-panel/assets/{index-CHtwoTKX.js → index-Cpfn4YbT.js} +1 -1
  123. package/src/assets/web-panel/assets/index-Cu9gkyRc.js +1 -0
  124. package/src/assets/web-panel/assets/{index-BKfR2eSQ.js → index-Czt7WAtA.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-B57W1RB6.js → index-D6qL3QBU.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-BLv-KSGc.js → index-DAOpBv3C.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-D_Md0Jhp.js → index-DB4DCzqU.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-BjMY3Y_L.js → index-DIImi0cd.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-Cgztj1JO.js → index-DPRgnazi.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-Cfk4o9eI.js → index-DgMFnBOv.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-B_65aY6c.js → index-KWt8Owo8.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-IFEbaISP.js → index-KqfqSdAC.js} +1 -1
  133. package/src/assets/web-panel/assets/{index-DdC0OsNh.js → index-b4O_YBVR.js} +1 -1
  134. package/src/assets/web-panel/assets/{index-DruABY-g.js → index-beDji-cB.js} +1 -1
  135. package/src/assets/web-panel/assets/{index-CZmBlh5P.js → index-hw3sCYAz.js} +1 -1
  136. package/src/assets/web-panel/assets/{index-Mxj-qi1G.js → index-zSzXsF9b.js} +1 -1
  137. package/src/assets/web-panel/assets/{initDefaultProps-Dl0wiMxn.js → initDefaultProps-TgDL_7OY.js} +1 -1
  138. package/src/assets/web-panel/assets/{motion-BFmZYrGO.js → motion-fHosyV5c.js} +1 -1
  139. package/src/assets/web-panel/assets/{move-Cjs64yWq.js → move-C_QfW5qg.js} +1 -1
  140. package/src/assets/web-panel/assets/{mtc-parser-NeQsnBuP.js → mtc-parser-u7ywDVOg.js} +1 -1
  141. package/src/assets/web-panel/assets/{omit-4Rs-rfs9.js → omit-BEJdUgE9.js} +1 -1
  142. package/src/assets/web-panel/assets/{pickAttrs-CUhx2rDY.js → pickAttrs-DGkQFAJ5.js} +1 -1
  143. package/src/assets/web-panel/assets/{placementArrow-DbIM_OB2.js → placementArrow-DUyZXAjt.js} +1 -1
  144. package/src/assets/web-panel/assets/{responsiveObserve-B_TGx9AN.js → responsiveObserve-B4xDxO7Q.js} +1 -1
  145. package/src/assets/web-panel/assets/{slide-C46cEP5t.js → slide-B8WuJtst.js} +1 -1
  146. package/src/assets/web-panel/assets/{statusUtils-DqeksICX.js → statusUtils-DLUqy7JO.js} +1 -1
  147. package/src/assets/web-panel/assets/{styleChecker-2rrypo5u.js → styleChecker-BYOJOyqL.js} +1 -1
  148. package/src/assets/web-panel/assets/{useFlexGapSupport-RRe1Edsg.js → useFlexGapSupport-WChWQURv.js} +1 -1
  149. package/src/assets/web-panel/assets/{useFs-CB0oxU1U.js → useFs-vLNpm3dv.js} +1 -1
  150. package/src/assets/web-panel/assets/{usePersonalDataHub-B98WdlUE.js → usePersonalDataHub-DSZ8unoU.js} +1 -1
  151. package/src/assets/web-panel/assets/{vnode-CY8AoD95.js → vnode-C4Xf7Kg1.js} +1 -1
  152. package/src/assets/web-panel/assets/{zoom-BnT-0MbP.js → zoom-BulmeAGy.js} +1 -1
  153. package/src/assets/web-panel/index.html +1 -1
  154. package/src/command-help-index.json +1 -1
  155. package/src/commands/agent-controlled-host.js +220 -0
  156. package/src/commands/agent.js +3 -1
  157. package/src/data/changelog.json +13 -0
  158. package/src/lib/eval/verify01-execution.js +9 -0
  159. package/src/lib/eval/verify01-host-capture.js +430 -0
  160. package/src/assets/web-panel/assets/ChatBubbleRenderer-B0-euPW7.js +0 -1
  161. package/src/assets/web-panel/assets/Logs-Coa_qNhU.js +0 -2
  162. package/src/assets/web-panel/assets/MarkdownRenderer-CeT_RocE.js +0 -1
  163. package/src/assets/web-panel/assets/MobileProjects-D4bWcHA_.js +0 -1
  164. package/src/assets/web-panel/assets/PdhVaultBrowser-DxZb0Ux8.js +0 -7
  165. package/src/assets/web-panel/assets/devWarning-3-s4adfp.js +0 -1
  166. package/src/assets/web-panel/assets/index-ZMf_BGlO.js +0 -1
  167. package/src/assets/web-panel/assets/index-jvp8bJBF.js +0 -1
@@ -0,0 +1,430 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { randomUUID } from "node:crypto";
4
+ import { evalDigest } from "./evidence.js";
5
+ import { outcomeDigest } from "./outcomes.js";
6
+ import {
7
+ requireValue,
8
+ relativeFile,
9
+ readBytes,
10
+ validateVerify01Review,
11
+ } from "./verify01-contracts.js";
12
+ import {
13
+ materializeVerify01Checkout,
14
+ snapshotVerify01Workspace,
15
+ diffVerify01Workspace,
16
+ runVerify01ReviewedProcess,
17
+ } from "./verify01-execution.js";
18
+ import { importVerify01HostCapture } from "./verify01-host-evidence.js";
19
+
20
+ const STATE_SCHEMA = "chainlesschain.verify01-host-preparation/v1";
21
+ const save = (root, file, value) => {
22
+ const bytes = Buffer.from(JSON.stringify(value, null, 2) + "\n");
23
+ fs.writeFileSync(path.join(root, file), bytes, { flag: "wx", mode: 0o600 });
24
+ return { path: file, digest: evalDigest(bytes) };
25
+ };
26
+
27
+ export function captureArtifactReader(directory) {
28
+ const root = fs.realpathSync(directory);
29
+ return (relative) => {
30
+ relativeFile(relative);
31
+ let file = root;
32
+ for (const segment of relative.split("/")) {
33
+ file = path.join(file, segment);
34
+ requireValue(
35
+ !fs.lstatSync(file).isSymbolicLink(),
36
+ "capture path traverses a link",
37
+ );
38
+ }
39
+ return readBytes(file);
40
+ };
41
+ }
42
+
43
+ function outside(workspace, directory) {
44
+ const suffix = path.relative(workspace, directory);
45
+ requireValue(
46
+ suffix && (suffix.startsWith(`..${path.sep}`) || path.isAbsolute(suffix)),
47
+ "host control directories must be outside task workspace",
48
+ );
49
+ }
50
+
51
+ function budget(deadline) {
52
+ return {
53
+ remainingMs(stage) {
54
+ const remaining = deadline - Date.now();
55
+ requireValue(
56
+ remaining > 0,
57
+ `host task deadline exhausted during ${stage}`,
58
+ );
59
+ return remaining;
60
+ },
61
+ };
62
+ }
63
+
64
+ function select(bundle, preparation, sampleId) {
65
+ const artifacts = new Map();
66
+ const validated = validateVerify01Review(bundle, {
67
+ ...preparation,
68
+ readReviewedFile(file) {
69
+ const bytes = Buffer.from(preparation.readReviewedFile(file));
70
+ artifacts.set(file, bytes);
71
+ return bytes;
72
+ },
73
+ });
74
+ const sample = validated.samples.get(sampleId);
75
+ requireValue(sample, "sample outside frozen population");
76
+ const target = bundle.bindings.matrix.find((row) =>
77
+ sample.stratum.startsWith(`${row.platform}-${row.entry}-`),
78
+ );
79
+ requireValue(
80
+ target && ["vscode", "jetbrains"].includes(target.entry),
81
+ "host capture requires an actual IDE entry",
82
+ );
83
+ const comparison = bundle.bindings.comparisons[sample.stratum];
84
+ requireValue(
85
+ process.platform === target.platform &&
86
+ process.arch === target.arch &&
87
+ process.version === target.node,
88
+ "actual capture runtime differs from frozen platform/arch/Node",
89
+ );
90
+ return {
91
+ sample,
92
+ target,
93
+ comparison,
94
+ artifacts,
95
+ task: validated.tasks.get(sample.taskId),
96
+ reviewed: validated.reviewed.get(sample.taskId),
97
+ };
98
+ }
99
+
100
+ /** Stores before bodies outside the candidate checkout. Each blob remains
101
+ * byte-bound; dependency files retain only their existing streamed identity.
102
+ */
103
+ function storeBaseline(root, snapshot) {
104
+ const blobDirectory = path.join(root, "baseline-blobs");
105
+ fs.mkdirSync(blobDirectory, { mode: 0o700 });
106
+ const indexes = [];
107
+ let page = [],
108
+ pageBytes = 0;
109
+ const flush = () => {
110
+ if (!page.length) return;
111
+ indexes.push(save(root, `baseline-index-${indexes.length}.json`, page));
112
+ page = [];
113
+ pageBytes = 0;
114
+ };
115
+ for (const [file, value] of snapshot) {
116
+ let blob = null;
117
+ if (value.bytes !== null) {
118
+ blob = `baseline-blobs/${value.digest.slice(7)}.blob`;
119
+ const location = path.join(root, blob);
120
+ if (!fs.existsSync(location))
121
+ fs.writeFileSync(location, value.bytes, { flag: "wx", mode: 0o600 });
122
+ }
123
+ const entry = { path: file, ...value, bytes: undefined, blob };
124
+ const size = Buffer.byteLength(JSON.stringify(entry)) + 64;
125
+ if (pageBytes + size > 4 * 1024 * 1024) flush();
126
+ page.push(entry);
127
+ pageBytes += size;
128
+ }
129
+ flush();
130
+ return {
131
+ indexes,
132
+ files: snapshot.size,
133
+ dependencyBoundary: snapshot.dependencyBoundary,
134
+ };
135
+ }
136
+
137
+ function loadBaseline(root, baseline) {
138
+ const read = captureArtifactReader(root);
139
+ const entries = new Map();
140
+ let total = 0;
141
+ requireValue(
142
+ Number.isSafeInteger(baseline.files) &&
143
+ baseline.files <= 1100000 &&
144
+ Array.isArray(baseline.indexes),
145
+ "baseline file count exceeds scan bounds",
146
+ );
147
+ for (const index of baseline.indexes) {
148
+ const indexBytes = read(index.path);
149
+ requireValue(
150
+ evalDigest(indexBytes) === index.digest,
151
+ "baseline index byte binding differs",
152
+ );
153
+ for (const file of JSON.parse(indexBytes)) {
154
+ relativeFile(file.path);
155
+ requireValue(!entries.has(file.path), "duplicate baseline path");
156
+ const bytes = file.blob === null ? null : read(file.blob);
157
+ if (bytes !== null) {
158
+ total += bytes.length;
159
+ requireValue(
160
+ total <= 512 * 1024 * 1024 &&
161
+ bytes.length === file.size &&
162
+ evalDigest(bytes) === file.digest,
163
+ "before body differs from pinned baseline",
164
+ );
165
+ } else
166
+ requireValue(
167
+ file.dependency === true,
168
+ "nondependency baseline lacks its before body",
169
+ );
170
+ entries.set(file.path, { ...file, bytes });
171
+ requireValue(
172
+ entries.size <= baseline.files,
173
+ "baseline index has extra paths",
174
+ );
175
+ }
176
+ }
177
+ requireValue(entries.size === baseline.files, "baseline index is incomplete");
178
+ entries.dependencyBoundary = baseline.dependencyBoundary;
179
+ return entries;
180
+ }
181
+
182
+ export async function prepareVerify01HostTask(bundle, preparation, options) {
183
+ const { sample, target, comparison, artifacts, task, reviewed } = select(
184
+ bundle,
185
+ preparation,
186
+ options.sampleId,
187
+ );
188
+ requireValue(
189
+ options.os === target.os,
190
+ "operator OS declaration differs from frozen target",
191
+ );
192
+ requireValue(
193
+ /^[a-f0-9]{40}$/u.test(options.sourceCommit || ""),
194
+ "tested CLI source SHA required",
195
+ );
196
+ const workspace = path.resolve(options.workspace),
197
+ root = path.resolve(options.captureRoot);
198
+ const reviewRoot = fs.realpathSync(options.reviewRoot);
199
+ outside(workspace, root);
200
+ outside(workspace, reviewRoot);
201
+ requireValue(
202
+ !fs.existsSync(workspace) && !fs.existsSync(root),
203
+ "workspace and capture directory must be new; retry cannot overwrite an attempt",
204
+ );
205
+ const startedAt = new Date().toISOString(),
206
+ deadline = Date.now() + sample.timeBudgetMs;
207
+ fs.mkdirSync(workspace, { recursive: true, mode: 0o700 });
208
+ fs.mkdirSync(root, { recursive: true, mode: 0o700 });
209
+ const stageBudget = budget(deadline);
210
+ try {
211
+ const checkout = await materializeVerify01Checkout(
212
+ options.projectRoot,
213
+ bundle.catalog.projectCommit,
214
+ workspace,
215
+ stageBudget,
216
+ );
217
+ const setupBytes = artifacts.get(reviewed.setup.path);
218
+ const setup = runVerify01ReviewedProcess(
219
+ setupBytes,
220
+ workspace,
221
+ reviewRoot,
222
+ "setup",
223
+ stageBudget.remainingMs("setup"),
224
+ );
225
+ save(root, "setup.json", setup);
226
+ requireValue(
227
+ setup.exitCode === 0 && setup.signal === null && setup.error === null,
228
+ "reviewed host setup failed; preserve this first attempt",
229
+ );
230
+ const baseline = storeBaseline(
231
+ root,
232
+ snapshotVerify01Workspace(workspace, stageBudget, "baseline"),
233
+ );
234
+ const state = {
235
+ schema: STATE_SCHEMA,
236
+ sampleId: sample.id,
237
+ taskId: task.id,
238
+ planDigest: bundle.expectedPlanDigest,
239
+ reviewDigest: preparation.expectedReviewDigest,
240
+ projectCommit: bundle.catalog.projectCommit,
241
+ sourceCommit: options.sourceCommit,
242
+ entry: target.entry,
243
+ platform: process.platform,
244
+ arch: process.arch,
245
+ node: process.version,
246
+ os: options.os,
247
+ host: target.host,
248
+ workspace,
249
+ captureRoot: root,
250
+ startedAt,
251
+ deadline,
252
+ runId: `verify01-host-${randomUUID()}`,
253
+ checkout,
254
+ baseline,
255
+ provider: comparison.provider,
256
+ model: comparison.model,
257
+ permissionMode: comparison.permissionMode,
258
+ observationsCreated: false,
259
+ productionAttested: false,
260
+ };
261
+ save(root, "host-state.json", state);
262
+ fs.writeFileSync(path.join(root, "prompt.txt"), task.prompt, {
263
+ flag: "wx",
264
+ mode: 0o600,
265
+ });
266
+ return {
267
+ stateFile: path.join(root, "host-state.json"),
268
+ stateDigest: outcomeDigest(state),
269
+ state,
270
+ };
271
+ } catch (error) {
272
+ save(root, "prepare-failure.json", {
273
+ startedAt,
274
+ finishedAt: new Date().toISOString(),
275
+ sampleId: sample.id,
276
+ error: error.message,
277
+ observationsCreated: false,
278
+ });
279
+ throw error;
280
+ }
281
+ }
282
+
283
+ /** Execute the externally pinned acceptance bytes and assemble only actual
284
+ * driver files. Import into Eval/outcome is validated before writing output.
285
+ * First-run stage receipts are operator evidence, never inferred from setup.
286
+ */
287
+ export function finishVerify01HostTask(bundle, preparation, options) {
288
+ requireValue(
289
+ Number.isSafeInteger(options.retries ?? 0) &&
290
+ (options.retries ?? 0) >= 0 &&
291
+ (options.retries ?? 0) <= 1 &&
292
+ Number.isSafeInteger(options.manualRepairs ?? 0) &&
293
+ (options.manualRepairs ?? 0) >= 0,
294
+ "host attempt and manual repair counts must retain the frozen bounds",
295
+ );
296
+ const state = options.state;
297
+ requireValue(
298
+ state?.schema === STATE_SCHEMA &&
299
+ outcomeDigest(state) === options.expectedStateDigest,
300
+ "host preparation state byte binding differs",
301
+ );
302
+ requireValue(
303
+ state.planDigest === bundle.expectedPlanDigest &&
304
+ state.reviewDigest === preparation.expectedReviewDigest &&
305
+ state.projectCommit === bundle.catalog.projectCommit &&
306
+ state.sourceCommit === options.sourceCommit,
307
+ "host preparation frozen identity differs",
308
+ );
309
+ const { sample, target, task, reviewed, artifacts } = select(
310
+ bundle,
311
+ preparation,
312
+ state.sampleId,
313
+ );
314
+ requireValue(
315
+ state.entry === target.entry &&
316
+ state.os === target.os &&
317
+ state.host === target.host &&
318
+ state.platform === target.platform &&
319
+ state.arch === target.arch &&
320
+ state.node === target.node,
321
+ "prepared host identity changed",
322
+ );
323
+ requireValue(
324
+ Number.isSafeInteger(state.deadline) &&
325
+ Number.isFinite(Date.parse(state.startedAt)) &&
326
+ state.deadline > Date.parse(state.startedAt) &&
327
+ state.deadline - Date.parse(state.startedAt) <= sample.timeBudgetMs + 1,
328
+ "host task deadline differs from frozen budget",
329
+ );
330
+ const stageBudget = budget(state.deadline),
331
+ root = fs.realpathSync(state.captureRoot),
332
+ workspace = fs.realpathSync(state.workspace);
333
+ outside(workspace, root);
334
+ outside(workspace, fs.realpathSync(options.reviewRoot));
335
+ const read = captureArtifactReader(root);
336
+ // Require raw host evidence before spending the remaining acceptance budget.
337
+ const protocol = read("protocol.json"),
338
+ ui = read("ui.json");
339
+ const before = loadBaseline(root, state.baseline);
340
+ const after = snapshotVerify01Workspace(workspace, stageBudget, "after-host");
341
+ const changes = diffVerify01Workspace(before, after);
342
+ const unrelatedChanges = changes
343
+ .filter(
344
+ (change) =>
345
+ !reviewed.allowedChangedPaths.includes(change.path) ||
346
+ change.before?.dependency ||
347
+ change.after?.dependency ||
348
+ change.after?.type === "link",
349
+ )
350
+ .map((change) => change.path);
351
+ save(root, "diff.json", changes);
352
+ save(root, "dependency-boundary.json", {
353
+ before: before.dependencyBoundary,
354
+ after: after.dependencyBoundary,
355
+ });
356
+ requireValue(
357
+ unrelatedChanges.length === 0,
358
+ "host task changed unreviewed/dependency paths; full diff preserved",
359
+ );
360
+ const processReceipt = runVerify01ReviewedProcess(
361
+ artifacts.get(reviewed.check.path),
362
+ workspace,
363
+ options.reviewRoot,
364
+ "check",
365
+ stageBudget.remainingMs("check"),
366
+ );
367
+ save(root, "check-process.json", processReceipt);
368
+ requireValue(
369
+ processReceipt.exitCode === 0 &&
370
+ processReceipt.signal === null &&
371
+ processReceipt.error === null,
372
+ "reviewed host check failed to complete; process receipt preserved",
373
+ );
374
+ const verdict = JSON.parse(processReceipt.stdout);
375
+ requireValue(
376
+ typeof verdict.pass === "boolean" && typeof verdict.detail === "string",
377
+ "reviewed host check did not emit a verdict",
378
+ );
379
+ const check = {
380
+ taskId: task.id,
381
+ reviewDigest: state.reviewDigest,
382
+ pass: verdict.pass,
383
+ detail: verdict.detail,
384
+ changedFiles: changes.map((change) => change.path),
385
+ unrelatedChanges,
386
+ process: processReceipt,
387
+ };
388
+ save(root, "check.json", check);
389
+ const observedAt = new Date().toISOString();
390
+ const manifest = {
391
+ schema: "chainlesschain.verify01-host-capture/v1",
392
+ sampleId: state.sampleId,
393
+ planDigest: state.planDigest,
394
+ reviewDigest: state.reviewDigest,
395
+ projectCommit: state.projectCommit,
396
+ sourceCommit: state.sourceCommit,
397
+ entry: state.entry,
398
+ platform: state.platform,
399
+ os: state.os,
400
+ arch: state.arch,
401
+ node: state.node,
402
+ host: state.host,
403
+ runId: state.runId,
404
+ observedAt,
405
+ elapsedMs: Date.parse(observedAt) - Date.parse(state.startedAt),
406
+ retries: options.retries ?? 0,
407
+ manualRepairs: options.manualRepairs ?? 0,
408
+ failureCause: options.failureCause ?? "unknown",
409
+ protocol: { path: "protocol.json", digest: evalDigest(protocol) },
410
+ ui: { path: "ui.json", digest: evalDigest(ui) },
411
+ check: { path: "check.json", digest: evalDigest(read("check.json")) },
412
+ diff: { path: "diff.json", digest: evalDigest(read("diff.json")) },
413
+ ...(sample.kind === "first-run" ? { firstRun: options.firstRun } : {}),
414
+ };
415
+ const captureDigest = outcomeDigest(manifest);
416
+ const imported = importVerify01HostCapture(bundle, preparation, {
417
+ manifest,
418
+ expectedManifestDigest: captureDigest,
419
+ readArtifact: read,
420
+ sourceCommit: state.sourceCommit,
421
+ });
422
+ save(root, "capture.json", manifest);
423
+ save(root, "host-import.json", imported);
424
+ return {
425
+ manifestFile: path.join(root, "capture.json"),
426
+ captureDigest,
427
+ imported,
428
+ observationsSavedToFormalPlan: false,
429
+ };
430
+ }
@@ -1 +0,0 @@
1
- import{I as h,P as u,J as S,U as n,R as a,S as y,K as x,Q as C,V as w,_ as B,b as s}from"./vendor-Bn1JzzAn.js";import{_ as k}from"./index-BOuUUW2U.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"),v=String(e.getHours()).padStart(2,"0"),b=String(e.getMinutes()).padStart(2,"0");return`${p}-${f}-${g} ${v}:${b}`}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"},M={class:"meta"},R={class:"actor"},V={class:"time"},q={class:"body"};function D(c,d,t,r,i,l){const o=h("a-tag");return u(),S("div",{class:B(["chat-row",{mine:r.isMine}])},[n("div",T,[n("div",M,[n("span",R,a(r.actorLabel),1),n("span",V,a(r.formattedTime),1)]),n("div",q,a(r.messageText),1),t.event.source.adapter?(u(),y(o,{key:0,class:"src",color:r.adapterColor},{default:x(()=>[C(a(t.event.source.adapter),1)]),_:1},8,["color"])):w("v-if",!0)])],2)}const A=k(N,[["render",D],["__scopeId","data-v-49238629"],["__file","/tmp/cc-web-panel-2xvxKv/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,V as x,S as V,R as S,F as W,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 K}from"./index-BOuUUW2U.js";import{R as j}from"./icons-DG5UD-6K.js";const q={__name:"Logs",setup(N,{expose:a}){a();const k=K(),e=r("status"),y=r(!1),_=r(""),i=r(""),c=r(""),f=r(!0),o=r(null),h={status:"status",doctor:"doctor","skill-sources":"skill sources","llm-providers":"llm providers"},m=T(()=>i.value.split(`
2
- `)),b=T(()=>{if(!c.value)return m.value;const t=c.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(!c.value)return t;const u=c.value.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return t.replace(new RegExp(`(${u})`,"gi"),"<mark>$1</mark>")}async function B(){y.value=!0,_.value="",i.value="";const t=h[e.value]||"status";try{const{output:u}=await k.execute(t,3e4);i.value=u,f.value&&(await C(),o.value&&(o.value.scrollTop=o.value.scrollHeight))}catch(u){_.value=`执行失败: ${u.message}`,i.value=_.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:k,activeTab:e,loading:y,error:_,rawOutput:i,searchQuery:c,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 K}};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 Z(N,a,k,e,y,_){const i=s("a-checkbox"),c=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:v(()=>[n(i,{checked:e.autoScroll,"onUpdate:checked":a[0]||(a[0]=l=>e.autoScroll=l)},{default:v(()=>[...a[3]||(a[3]=[O("自动滚动",-1)])]),_:1},8,["checked"]),n(c,{type:"primary",ghost:"",loading:e.loading,onClick:e.loadLog},{icon:v(()=>[n(e.ReloadOutlined)]),default:v(()=>[a[4]||(a[4]=O(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),x(" 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:v(()=>[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"]),x(" 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(),V(b,{key:0,color:"blue"},{default:v(()=>[O(S(e.filteredLines.length)+" / "+S(e.allLines.length)+" 行 ",1)]),_:1})):x("v-if",!0)]),x(" 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(W,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",Z],["__scopeId","data-v-8c2906e0"],["__file","/tmp/cc-web-panel-2xvxKv/repo/packages/web-panel/src/views/Logs.vue"]]);export{$ as default};
@@ -1 +0,0 @@
1
- import{P as c,J as p,b as s}from"./vendor-Bn1JzzAn.js";import{r as a}from"./markdown-Yo_c6Krv.js";import{_ as d}from"./index-BOuUUW2U.js";const _={__name:"MarkdownRenderer",props:{content:{type:String,default:""}},setup(t,{expose:o}){o();const e=t,r=s(()=>a(e.content||"")),n={props:e,rendered:r,computed:s,get renderMarkdown(){return a}};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}},i=["innerHTML"];function m(t,o,e,r,n,u){return c(),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-2xvxKv/repo/packages/web-panel/src/components/MarkdownRenderer.vue"]]);export{w as M};
@@ -1 +0,0 @@
1
- import{I as n,J as g,c as l,K as r,N as u,P as h,U as o,R as t,Q as b}from"./vendor-Bn1JzzAn.js";import{_ as v,b as m}from"./index-BOuUUW2U.js";import{a8 as x,M as y}from"./icons-DG5UD-6K.js";const M={__name:"MobileProjects",setup(p,{expose:i}){i();const c=u(),{t:e}=m();function a(){c.push("/projects")}function _(){c.push("/mobile-bridge")}const s={router:c,t:e,goToProjects:a,goToMobileBridge:_,get useRouter(){return u},get useI18n(){return m},get MobileOutlined(){return y},get FolderOutlined(){return x}};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}},B={class:"mobile-projects-placeholder"},O={class:"title"},k={class:"subtitle"},w={class:"explainer"};function T(p,i,c,e,a,_){const s=n("a-alert"),d=n("a-button"),f=n("a-space"),P=n("a-empty"),j=n("a-card");return h(),g("div",B,[l(j,null,{default:r(()=>[l(P,{description:!1},{image:r(()=>[l(e.MobileOutlined,{style:{fontSize:"64px",color:"#bfbfbf"}})]),default:r(()=>[o("h2",O,t(e.t("mobileProjects.title")),1),o("p",k,t(e.t("mobileProjects.subtitle")),1),l(s,{message:e.t("mobileProjects.v02Banner"),type:"info","show-icon":"",class:"banner"},null,8,["message"]),o("div",w,[o("h3",null,t(e.t("mobileProjects.currentDirection")),1),o("p",null,t(e.t("mobileProjects.currentDirectionBody")),1),o("ul",null,[o("li",null,t(e.t("mobileProjects.stepPhone")),1),o("li",null,t(e.t("mobileProjects.stepTap")),1),o("li",null,t(e.t("mobileProjects.stepPull")),1)]),o("h3",null,t(e.t("mobileProjects.reverseDirection")),1),o("p",null,t(e.t("mobileProjects.reverseDirectionBody")),1)]),l(f,{class:"actions"},{default:r(()=>[l(d,{type:"primary",onClick:e.goToProjects},{default:r(()=>[l(e.FolderOutlined),b(" "+t(e.t("mobileProjects.viewLocalProjects")),1)]),_:1}),l(d,{onClick:e.goToMobileBridge},{default:r(()=>[l(e.MobileOutlined),b(" "+t(e.t("mobileProjects.checkBridge")),1)]),_:1})]),_:1})]),_:1})]),_:1})])}const N=v(M,[["render",T],["__scopeId","data-v-9262cc45"],["__file","/tmp/cc-web-panel-2xvxKv/repo/packages/web-panel/src/views/MobileProjects.vue"]]);export{N as default};
@@ -1,7 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./ChatBubbleRenderer-B0-euPW7.js","./vendor-Bn1JzzAn.js","./index-BOuUUW2U.js","./icons-DG5UD-6K.js","./index-Cq93VfoF.css","./ChatBubbleRenderer-gy5SDGw2.css","./OrderTableRenderer-DmzHMEOa.js","./OrderTableRenderer-CfrDjSHT.css","./TimelineRenderer-CcKYq1Ue.js","./TimelineRenderer-BlTAtkOc.css","./EmailListRenderer-COrIx2Rg.js","./EmailListRenderer-DTPZPx_S.css","./GenericCardRenderer-DSRWrvcL.js","./GenericCardRenderer-o85VDYQS.css"])))=>i.map(i=>d[i]);
2
- import{E as ue,r as E,b as w,I as g,P as u,J as O,U as v,c,S as C,V as x,_ as M,F as V,Z as se,a0 as ae,R,K as m,Q as b,W as L,o as J}from"./vendor-Bn1JzzAn.js";import{u as U}from"./usePersonalDataHub-B98WdlUE.js";import{_ as D,e as F,d as P}from"./index-BOuUUW2U.js";import{aa as q,ag as K,M as Q,aI as z,v as G,aH as H,aq as W,ac as Y,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=E({...I}),t=E([]),n=E(null),e=E(!1),o=E(!1),a=E(null),l=E(null),s=E(!1),i=E({byCategory:{},byAdapter:{},bySubtype:{},total:0});let d=0,_=null;const j=w(()=>t.value.length>0),A=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:j,canLoadMore:A,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:Y,social:W,email:H,shopping:G,travel:z,system:Q,"ai-chat":K,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 Y},get PlayCircleOutlined(){return W},get MailOutlined(){return H},get ShoppingOutlined(){return G},get CarOutlined(){return z},get MobileOutlined(){return Q},get RobotOutlined(){return K},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"])):x("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,R(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"])):x("v-if",!0)],10,Oe))),128))])}const ke=D(he,[["render",Ce],["__scopeId","data-v-6b62a22e"],["__file","/tmp/cc-web-panel-2xvxKv/repo/packages/web-panel/src/components/pdh/CategorySidebar.vue"]]),xe={__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 j(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 A={props:e,emit:o,placeholderText:a,adapterOptions:l,dateRangeValue:s,hasActiveFilters:i,onQInput:d,onSearch:_,onDateChange:j,computed:w,get SearchOutlined(){return pe},get CloseCircleOutlined(){return fe},get InfoCircleOutlined(){return de}};return Object.defineProperty(A,"__isScriptSetup",{enumerable:!1,value:!0}),A}},Ee={class:"pdh-filter-bar"},Re={key:1,class:"hint"},je={key:2,class:"hint"};function Ae(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",Ee,[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})):x("v-if",!0),n.shortQuery?(u(),O("span",Re,[c(e.InfoCircleOutlined),t[3]||(t[3]=b(" 关键词需至少 3 字 (FTS5 trigram 限制) ",-1))])):n.mode==="like"?(u(),O("span",je,[c(e.InfoCircleOutlined),t[4]||(t[4]=b(" 当前为 LIKE 兜底模式 ",-1))])):x("v-if",!0)])}const Le=D(xe,[["render",Ae],["__scopeId","data-v-d7cce6e9"],["__file","/tmp/cc-web-panel-2xvxKv/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=L(()=>F(()=>import("./ChatBubbleRenderer-B0-euPW7.js"),__vite__mapDeps([0,1,2,3,4,5]),import.meta.url)),e=L(()=>F(()=>import("./OrderTableRenderer-DmzHMEOa.js"),__vite__mapDeps([6,1,2,3,4,7]),import.meta.url)),o=L(()=>F(()=>import("./TimelineRenderer-CcKYq1Ue.js"),__vite__mapDeps([8,1,2,3,4,9]),import.meta.url)),a=L(()=>F(()=>import("./EmailListRenderer-COrIx2Rg.js"),__vite__mapDeps([10,1,2,3,4,11]),import.meta.url)),l=L(()=>F(()=>import("./GenericCardRenderer-DSRWrvcL.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:L,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-2xvxKv/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(" 导出 ("+R(n.events.length)+") ",1),c(e.DownOutlined)]),_:1},8,["disabled"])]),_:1},8,["disabled"])}const Be=D(Pe,[["render",qe],["__file","/tmp/cc-web-panel-2xvxKv/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:Le,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"},Ke={key:0},Qe={key:0},ze={key:1},Ge={class:"loaded-of"},He={class:"results-list"},We={key:2,class:"load-more"};function Ye(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"),j=g("a-alert"),A=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})):x("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",Ke,[c(_,{size:"small"}),t[7]||(t[7]=b(" 载入中… ",-1))])):(u(),O(V,{key:1},[v("strong",null,R(e.store.facets.total),1),t[11]||(t[11]=b(" 条事件 ",-1)),e.store.filters.category?(u(),O("span",Qe,[t[8]||(t[8]=b(" / 当前类目 ",-1)),v("strong",null,R(e.categoryLabel(e.store.filters.category)),1),v("strong",null,R(e.store.facets.byCategory[e.store.filters.category]||0),1)])):x("v-if",!0),e.store.filters.q?(u(),O("span",ze,[t[9]||(t[9]=b(' / 关键词 "',-1)),v("em",null,R(e.store.filters.q),1),t[10]||(t[10]=b('"',-1))])):x("v-if",!0),v("span",Ge," / 已显示 "+R(e.store.results.length),1)],64))]),e.store.error?(u(),C(j,{key:0,type:"error","show-icon":"",message:e.store.error,closable:"",style:{margin:"12px 0"}},null,8,["message"])):x("v-if",!0),!e.store.isLoading&&e.store.results.length===0&&!e.store.error?(u(),C(A,{key:1,description:e.emptyHint,style:{"margin-top":"40px"}},null,8,["description"])):x("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",We,[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"])])):x("v-if",!0)])]),_:1})]),_:1})])}const nt=D(Ve,[["render",Ye],["__scopeId","data-v-0f7c02cd"],["__file","/tmp/cc-web-panel-2xvxKv/repo/packages/web-panel/src/views/PdhVaultBrowser.vue"]]);export{nt as default};
@@ -1 +0,0 @@
1
- import{Q as r}from"./index-BOuUUW2U.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-DEGHFpxz.js";import{a0 as t}from"./index-BOuUUW2U.js";import"./vendor-Bn1JzzAn.js";import"./responsiveObserve-B_TGx9AN.js";import"./useFlexGapSupport-RRe1Edsg.js";import"./styleChecker-2rrypo5u.js";import"./index-B_65aY6c.js";import"./icons-DG5UD-6K.js";const l=t(o);export{l as default};
@@ -1 +0,0 @@
1
- import{C as o}from"./Col-n_64Fog2.js";import{a0 as t}from"./index-BOuUUW2U.js";import"./vendor-Bn1JzzAn.js";import"./index-B_65aY6c.js";import"./icons-DG5UD-6K.js";const s=t(o);export{s as default};