chainlesschain 0.162.104 → 0.162.106

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 (153) hide show
  1. package/package.json +1 -1
  2. package/src/assets/web-panel/assets/{AIOps-7wopfJEc.js → AIOps-Dv4GUrHi.js} +1 -1
  3. package/src/assets/web-panel/assets/{ActionButton-D6EncMBP.js → ActionButton-C11GYZaf.js} +1 -1
  4. package/src/assets/web-panel/assets/{Analytics-BLkJWETZ.js → Analytics-CAqU4i6d.js} +3 -3
  5. package/src/assets/web-panel/assets/{AppLayout-y4u_FcxD.js → AppLayout-B6iRYx37.js} +5 -5
  6. package/src/assets/web-panel/assets/{Audit-hlo8J9H_.js → Audit-Da0ixyIA.js} +1 -1
  7. package/src/assets/web-panel/assets/{Backup-DqzEt7Xc.js → Backup-YnfhBosV.js} +1 -1
  8. package/src/assets/web-panel/assets/{BaseInput-DSjI2QZ0.js → BaseInput-BuIUclOL.js} +1 -1
  9. package/src/assets/web-panel/assets/{Chat-CgQ_Bgeg.js → Chat-ssBAsMhu.js} +5 -5
  10. package/src/assets/web-panel/assets/{ChatBubbleRenderer-DJL3sUhO.js → ChatBubbleRenderer-C5PQbIce.js} +1 -1
  11. package/src/assets/web-panel/assets/{Checkbox-DBZsek3m.js → Checkbox-BbWH0SgQ.js} +1 -1
  12. package/src/assets/web-panel/assets/{Codegen-DI31IpGL.js → Codegen-Dq0LbS-8.js} +1 -1
  13. package/src/assets/web-panel/assets/{Col-S4VUKCBd.js → Col-CZ8DawUj.js} +1 -1
  14. package/src/assets/web-panel/assets/{Community-CxgAmvQv.js → Community-C-4RVVBn.js} +1 -1
  15. package/src/assets/web-panel/assets/{Compact-CQGXVWYd.js → Compact-BzAr-qm-.js} +1 -1
  16. package/src/assets/web-panel/assets/{Compliance-CGr19kIb.js → Compliance-D8wHCcwg.js} +1 -1
  17. package/src/assets/web-panel/assets/{Cowork-rH5D-DX-.js → Cowork-B3QMCVBt.js} +4 -4
  18. package/src/assets/web-panel/assets/{Cron-C-nzaMqo.js → Cron-4w6DhJyQ.js} +2 -2
  19. package/src/assets/web-panel/assets/{Crosschain-BhF204Dq.js → Crosschain-Ctlzq9uc.js} +1 -1
  20. package/src/assets/web-panel/assets/{DID-CjG7LevM.js → DID-FdDbrHQA.js} +2 -2
  21. package/src/assets/web-panel/assets/{Dashboard-4KQLCTgc.js → Dashboard-DQSb46zq.js} +2 -2
  22. package/src/assets/web-panel/assets/{Dropdown-Ci6FL0LF.js → Dropdown-CT4M3kjL.js} +1 -1
  23. package/src/assets/web-panel/assets/{EmailListRenderer-CccC9rY4.js → EmailListRenderer-BtTH_9Bp.js} +1 -1
  24. package/src/assets/web-panel/assets/{FamilyGuardDashboard-cohPI6FO.js → FamilyGuardDashboard-D31xtzUB.js} +1 -1
  25. package/src/assets/web-panel/assets/{Federation-DgxfOhS7.js → Federation-BNfmfO2p.js} +1 -1
  26. package/src/assets/web-panel/assets/{FormItemContext-DECvusFi.js → FormItemContext-C3kmm4nv.js} +1 -1
  27. package/src/assets/web-panel/assets/{GenericCardRenderer-CLTKtVEy.js → GenericCardRenderer-BW1P7ZdH.js} +1 -1
  28. package/src/assets/web-panel/assets/{Git-DzuwhoVf.js → Git-DcSEl0Ah.js} +2 -2
  29. package/src/assets/web-panel/assets/{Governance-C3SuwAQZ.js → Governance-Cb8D9qqe.js} +1 -1
  30. package/src/assets/web-panel/assets/{Inference-CW8SeIAb.js → Inference-DTpGkMXl.js} +1 -1
  31. package/src/assets/web-panel/assets/{KnowledgeGraph-B4wJIJ-0.js → KnowledgeGraph-wQuzZA4b.js} +1 -1
  32. package/src/assets/web-panel/assets/Logs-C3S78_e6.js +2 -0
  33. package/src/assets/web-panel/assets/{Marketplace-DCUW-nnI.js → Marketplace-D0utQC7f.js} +1 -1
  34. package/src/assets/web-panel/assets/{McpTools-DagPQpHC.js → McpTools-CEZolkxe.js} +5 -5
  35. package/src/assets/web-panel/assets/{Memory-DrzxLek2.js → Memory-DkBzSUv5.js} +2 -2
  36. package/src/assets/web-panel/assets/{MobileBridge-Xz4D9zEc.js → MobileBridge-Dz-Bg3K9.js} +2 -2
  37. package/src/assets/web-panel/assets/{MobileProjects-BYw4mHvO.js → MobileProjects-YMh4rmVJ.js} +1 -1
  38. package/src/assets/web-panel/assets/{Mtc-30fdfUjX.js → Mtc-DQyn5PRr.js} +4 -4
  39. package/src/assets/web-panel/assets/{MtcAudit-CLzGDzjM.js → MtcAudit-DY1t-cQ3.js} +6 -6
  40. package/src/assets/web-panel/assets/{Multisig-Taa7sLmO.js → Multisig-DdzGB5qb.js} +3 -3
  41. package/src/assets/web-panel/assets/{NLProgramming-BmxE8pja.js → NLProgramming-D5Jrv_7S.js} +1 -1
  42. package/src/assets/web-panel/assets/{Notes-CWsIiNXy.js → Notes-Wxg8M_jp.js} +4 -4
  43. package/src/assets/web-panel/assets/{NotificationSettings-DphQdsow.js → NotificationSettings-BOLm3krj.js} +1 -1
  44. package/src/assets/web-panel/assets/{OrderTableRenderer-BoWoi08m.js → OrderTableRenderer-DXgWKvKG.js} +1 -1
  45. package/src/assets/web-panel/assets/{Organization-Crgm-1TX.js → Organization-DpH01k8R.js} +4 -4
  46. package/src/assets/web-panel/assets/{Overflow-5lZ6XU8p.js → Overflow-Cy2EGsg8.js} +1 -1
  47. package/src/assets/web-panel/assets/{P2P-CS-HiHCu.js → P2P-BF606jDo.js} +2 -2
  48. package/src/assets/web-panel/assets/{PdhVaultBrowser-DaxnZdvZ.js → PdhVaultBrowser-DPmsKIL7.js} +5 -5
  49. package/src/assets/web-panel/assets/{Permissions-BDyk_RXH.js → Permissions-B5SjhtW_.js} +3 -3
  50. package/src/assets/web-panel/assets/{PersonalDataHub-D_7W0q0f.js → PersonalDataHub-CjSBOSps.js} +3 -3
  51. package/src/assets/web-panel/assets/{Pipeline-BBh5N_nJ.js → Pipeline-CLKKF03d.js} +1 -1
  52. package/src/assets/web-panel/assets/{Privacy-D3nQr2CR.js → Privacy-BD9kj_AO.js} +1 -1
  53. package/src/assets/web-panel/assets/{ProjectInit-DB2awvBj.js → ProjectInit-1wPQe32f.js} +2 -2
  54. package/src/assets/web-panel/assets/{ProjectSettings-Ca_tlgU9.js → ProjectSettings-ae1Zvm29.js} +2 -2
  55. package/src/assets/web-panel/assets/{Projects-Dc0F9486.js → Projects-D9mVKxrM.js} +1 -1
  56. package/src/assets/web-panel/assets/{Providers-D3NaA6yG.js → Providers-Bz6n7iqv.js} +1 -1
  57. package/src/assets/web-panel/assets/{QuickAsk-CdSYgl7s.js → QuickAsk-Cd5DPpgw.js} +1 -1
  58. package/src/assets/web-panel/assets/{Recommend-nolWD-R0.js → Recommend-BYhtuWo3.js} +1 -1
  59. package/src/assets/web-panel/assets/{Reputation-5stJBPxY.js → Reputation-ComyY4bA.js} +1 -1
  60. package/src/assets/web-panel/assets/{Row-CB4Ns1zc.js → Row-Dut8pwo9.js} +1 -1
  61. package/src/assets/web-panel/assets/{RssFeed-CYNnqrO3.js → RssFeed-xMhor0Fn.js} +3 -3
  62. package/src/assets/web-panel/assets/{Search-C01IKJzD.js → Search-D4_Od-8S.js} +1 -1
  63. package/src/assets/web-panel/assets/{Security-v6rOHkAt.js → Security-KeHoIe_R.js} +4 -4
  64. package/src/assets/web-panel/assets/{Services-C5p6LeFa.js → Services-C7smnFpg.js} +2 -2
  65. package/src/assets/web-panel/assets/{Skeleton-B-a0YWJk.js → Skeleton-PTR3fGUI.js} +1 -1
  66. package/src/assets/web-panel/assets/{Skills-CoWWWNM3.js → Skills-DHa51QLm.js} +1 -1
  67. package/src/assets/web-panel/assets/{Sla-BW4sMMYV.js → Sla-BS6ktlUr.js} +1 -1
  68. package/src/assets/web-panel/assets/{SpeechSettings-vR2XbHTs.js → SpeechSettings-bfol0gns.js} +1 -1
  69. package/src/assets/web-panel/assets/{SyncSettings-ByVjlC-k.js → SyncSettings-6jRuuFeW.js} +2 -2
  70. package/src/assets/web-panel/assets/{Tasks-CnWlikMD.js → Tasks-CnC1__IG.js} +1 -1
  71. package/src/assets/web-panel/assets/{Templates-DMak8sf4.js → Templates-DpCAWZlL.js} +1 -1
  72. package/src/assets/web-panel/assets/{Tenant-8nNeIn3c.js → Tenant-D3LAKar5.js} +1 -1
  73. package/src/assets/web-panel/assets/{Terminal-DNhoYCsQ.js → Terminal-DErDY8_S.js} +2 -2
  74. package/src/assets/web-panel/assets/{TimelineRenderer-BCfyEbsG.js → TimelineRenderer-DlzM7nlo.js} +1 -1
  75. package/src/assets/web-panel/assets/{Tokens-Dx6zQD-k.js → Tokens-DNNr3xhM.js} +1 -1
  76. package/src/assets/web-panel/assets/{Trigger-8IxN6NeY.js → Trigger-CHcYxpwE.js} +1 -1
  77. package/src/assets/web-panel/assets/{Trust-B3ALLmzY.js → Trust-3AYExgaT.js} +1 -1
  78. package/src/assets/web-panel/assets/{UkeySign-QP52j-1F.js → UkeySign-ZQ_TDiO7.js} +1 -1
  79. package/src/assets/web-panel/assets/{VideoEditing-DugXO1Jj.js → VideoEditing-Czq0TJsH.js} +1 -1
  80. package/src/assets/web-panel/assets/{Wallet-DST9EbXV.js → Wallet-DUktui_z.js} +4 -4
  81. package/src/assets/web-panel/assets/{WebAuthn-tAY0CGIn.js → WebAuthn-fmISWw5b.js} +5 -5
  82. package/src/assets/web-panel/assets/{WorkflowEditor-CFQ6BAuy.js → WorkflowEditor-C_CaijGN.js} +1 -1
  83. package/src/assets/web-panel/assets/{chat-Dx_Vki33.js → chat-MEgPH75-.js} +1 -1
  84. package/src/assets/web-panel/assets/{colors-CDu_PgKe.js → colors-DDL36J3G.js} +1 -1
  85. package/src/assets/web-panel/assets/{compact-item-DAmmY6Pd.js → compact-item-BkJXaF65.js} +1 -1
  86. package/src/assets/web-panel/assets/{createContext-BNfI5YlY.js → createContext-DlB8u_7c.js} +1 -1
  87. package/src/assets/web-panel/assets/devWarning-7FEuHryT.js +1 -0
  88. package/src/assets/web-panel/assets/{hasIn-DnQf32YV.js → hasIn-Bg2nafvH.js} +1 -1
  89. package/src/assets/web-panel/assets/{index-Bk7SsC3G.js → index--PGD56d7.js} +1 -1
  90. package/src/assets/web-panel/assets/index-1EaBTuZ5.js +1 -0
  91. package/src/assets/web-panel/assets/{index-HR5cV6TS.js → index-3HYiKj6K.js} +1 -1
  92. package/src/assets/web-panel/assets/{index--dugfJRR.js → index-4ysKKyCt.js} +1 -1
  93. package/src/assets/web-panel/assets/{index-DnciHih8.js → index-B23ECixr.js} +1 -1
  94. package/src/assets/web-panel/assets/{index-DwLMCuFo.js → index-BEhi2NON.js} +1 -1
  95. package/src/assets/web-panel/assets/{index-BpCwmJYd.js → index-BF8tpZiI.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-D8JSX4W7.js → index-BF_sEVw4.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-Mbq7juVQ.js → index-BHSFsKwc.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-DefG2WdL.js → index-BKpVxinm.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-DVuEZdlE.js → index-BQcBGn2e.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-yzrUI8Lj.js → index-BW6WKVTN.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-CN1Frc6z.js → index-BW_thoFO.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-CHKaGc76.js → index-BbcZ6gjd.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-B2E223yV.js → index-Bu-Dg9gm.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-BXoV0bGH.js → index-C5qRqnra.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-ThxGxLMM.js → index-C9Nf7l-4.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-CZGselS2.js → index-CCV5a_eZ.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-CMQaA1eY.js → index-CHHhMoP4.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-D-1Y7Klr.js → index-COiErcgq.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-yn1CVu0v.js → index-CPBU8am-.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-Bq3-M0HD.js → index-Cl3aP187.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-B_33ohRv.js → index-CroGv8Er.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-BvOZ4bMA.js → index-D2N4eCU-.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-O-6dvZFC.js → index-D7C9LYKH.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-CjgCRQPR.js → index-DI5UpGuc.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-BD42XJvr.js → index-DfTKct1S.js} +1 -1
  116. package/src/assets/web-panel/assets/index-DkuCcuSQ.js +1 -0
  117. package/src/assets/web-panel/assets/{index-Do9QgRwv.js → index-Dl2INE9h.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-DJ9fqGMi.js → index-Dm36uPhy.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-DQf4uzBI.js → index-DxJe_2Ra.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-D3j2PYB3.js → index-DzslfpyE.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-5-fynKGl.js → index-E9fKdmZS.js} +3 -3
  122. package/src/assets/web-panel/assets/{index-CokbOERQ.js → index-HwM0KYuJ.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-BAuM_u-a.js → index-JJaXdXuF.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-XgiYAJGU.js → index-K_8c8jDD.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-DrRdylF0.js → index-UPBfu9WY.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-Bp9dZbVc.js → index-nBzHyZw4.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-CAVRxcro.js → index-rc1sOE1s.js} +1 -1
  128. package/src/assets/web-panel/assets/{initDefaultProps-CgFmFSzg.js → initDefaultProps-DF4WRyT3.js} +1 -1
  129. package/src/assets/web-panel/assets/{motion-6cQjBgS8.js → motion-DYt7yuUl.js} +1 -1
  130. package/src/assets/web-panel/assets/{move-BANmUuW-.js → move-A2vu17_O.js} +1 -1
  131. package/src/assets/web-panel/assets/{omit-BNXz07Cb.js → omit-BE4gHEDC.js} +1 -1
  132. package/src/assets/web-panel/assets/{pickAttrs-CCuPnfHK.js → pickAttrs-DZPGMH7O.js} +1 -1
  133. package/src/assets/web-panel/assets/{placementArrow-BoM9dzEu.js → placementArrow-C314MZpn.js} +1 -1
  134. package/src/assets/web-panel/assets/{responsiveObserve-BX4PJmtw.js → responsiveObserve-BnImSTAx.js} +1 -1
  135. package/src/assets/web-panel/assets/{slide-Cp0GX__V.js → slide-lhFfg292.js} +1 -1
  136. package/src/assets/web-panel/assets/{statusUtils-DB45lYg-.js → statusUtils-NMoQTkOw.js} +1 -1
  137. package/src/assets/web-panel/assets/{styleChecker-BK22ABVM.js → styleChecker-tp7AHEoi.js} +1 -1
  138. package/src/assets/web-panel/assets/{useFlexGapSupport-C4dr4HyL.js → useFlexGapSupport-CPCXJDFA.js} +1 -1
  139. package/src/assets/web-panel/assets/{useFs-G4VQ7ftf.js → useFs-CCZ-ENkG.js} +1 -1
  140. package/src/assets/web-panel/assets/{usePersonalDataHub-BbVsrc-b.js → usePersonalDataHub-SYhI2gMH.js} +1 -1
  141. package/src/assets/web-panel/assets/{vnode-2W6kp99p.js → vnode-CwS9FORj.js} +1 -1
  142. package/src/assets/web-panel/assets/{zoom-Bheyn_9H.js → zoom-Dx1C3oM8.js} +1 -1
  143. package/src/assets/web-panel/index.html +1 -1
  144. package/src/commands/hub.js +13 -4
  145. package/src/commands/llm.js +89 -28
  146. package/src/gateways/ws/personal-data-hub-protocol.js +2 -1
  147. package/src/lib/__tests__/pdh-load-error.test.js +87 -0
  148. package/src/lib/pdh-load-error.js +58 -0
  149. package/src/lib/personal-data-hub-wiring.js +4 -38
  150. package/src/assets/web-panel/assets/Logs-CbjpWALx.js +0 -2
  151. package/src/assets/web-panel/assets/devWarning-DVHcIug4.js +0 -1
  152. package/src/assets/web-panel/assets/index-C7BeWaBy.js +0 -1
  153. package/src/assets/web-panel/assets/index-Dd1aUrrl.js +0 -1
@@ -0,0 +1,87 @@
1
+ /**
2
+ * pdh-load-error — shared rewritePdhLoadError + importPdh unit tests.
3
+ *
4
+ * This is the single source of truth for turning an incomplete-pdh-install
5
+ * resolution failure into an actionable repair message, used by the hub
6
+ * wiring, the ws system-data ingest, and the `cc hub collect-*` / `salvage`
7
+ * forensics commands. The rewrite must fire for a missing pdh module and pass
8
+ * everything else through untouched; importPdh must surface that rewrite on a
9
+ * failed dynamic import and otherwise return the module namespace verbatim.
10
+ */
11
+
12
+ import { describe, it, expect } from "vitest";
13
+ import { rewritePdhLoadError, importPdh } from "../pdh-load-error.js";
14
+
15
+ function missingPdhModuleError() {
16
+ const err = new Error(
17
+ "Cannot find module '.../@chainlesschain/personal-data-hub/lib/adapters/wechat/index.js'",
18
+ );
19
+ err.code = "ERR_MODULE_NOT_FOUND";
20
+ err.url =
21
+ "file:///.../@chainlesschain/personal-data-hub/lib/adapters/wechat/index.js";
22
+ return err;
23
+ }
24
+
25
+ describe("rewritePdhLoadError", () => {
26
+ it("rewrites a missing pdh module into the actionable repair error", () => {
27
+ const err = missingPdhModuleError();
28
+ const out = rewritePdhLoadError(err);
29
+ expect(out).not.toBe(err);
30
+ expect(out.code).toBe("PDH_INSTALL_INCOMPLETE");
31
+ expect(out.cause).toBe(err);
32
+ expect(out.message).toMatch(/incomplete/i);
33
+ expect(out.message).toMatch(/npm i -g chainlesschain/);
34
+ });
35
+
36
+ it("rewrites when the package root itself is missing (no url)", () => {
37
+ const err = new Error(
38
+ "Cannot find package '@chainlesschain/personal-data-hub' imported from x",
39
+ );
40
+ err.code = "ERR_MODULE_NOT_FOUND";
41
+ expect(rewritePdhLoadError(err).code).toBe("PDH_INSTALL_INCOMPLETE");
42
+ });
43
+
44
+ it("passes through a missing module that is NOT pdh", () => {
45
+ const err = new Error("Cannot find module './other.js'");
46
+ err.code = "ERR_MODULE_NOT_FOUND";
47
+ expect(rewritePdhLoadError(err)).toBe(err);
48
+ });
49
+
50
+ it("passes through a real pdh runtime bug (TypeError)", () => {
51
+ const err = new TypeError("x is not a function in personal-data-hub");
52
+ expect(rewritePdhLoadError(err)).toBe(err);
53
+ });
54
+
55
+ it("is null/undefined safe", () => {
56
+ expect(rewritePdhLoadError(null)).toBe(null);
57
+ expect(rewritePdhLoadError(undefined)).toBe(undefined);
58
+ });
59
+ });
60
+
61
+ describe("importPdh", () => {
62
+ it("returns the module namespace for a resolvable specifier", async () => {
63
+ // Self-import: the shared module is always resolvable.
64
+ const ns = await importPdh(
65
+ new URL("../pdh-load-error.js", import.meta.url),
66
+ );
67
+ expect(typeof ns.importPdh).toBe("function");
68
+ expect(typeof ns.rewritePdhLoadError).toBe("function");
69
+ });
70
+
71
+ it("passes a non-pdh resolution failure through unchanged", async () => {
72
+ // importPdh surfaces real failures; the rewrite is scoped to pdh, so a
73
+ // missing local module rejects with its original (non-PDH) error. (The
74
+ // actual missing-pdh-file → PDH_INSTALL_INCOMPLETE rewrite is covered by
75
+ // the rewritePdhLoadError cases above; a real ERR_MODULE_NOT_FOUND for a
76
+ // defined-but-missing pdh export can't be provoked without corrupting the
77
+ // installed package.)
78
+ let caught;
79
+ try {
80
+ await importPdh("./__no_such_local_module__.js");
81
+ } catch (e) {
82
+ caught = e;
83
+ }
84
+ expect(caught).toBeTruthy();
85
+ expect(caught.code).not.toBe("PDH_INSTALL_INCOMPLETE");
86
+ });
87
+ });
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Shared helper for loading the personal-data-hub package with an actionable
3
+ * error when the install is incomplete.
4
+ *
5
+ * pdh is imported lazily from several places (the hub wiring, the ws
6
+ * personal-data-hub protocol's system-data ingest, and the `cc hub
7
+ * collect-*` / `salvage` forensics commands). When a global
8
+ * `npm i -g chainlesschain` is interrupted mid-extraction — commonly a
9
+ * running `cc` / node process holding a lock on a native .node file →
10
+ * EBUSY/EPERM — the pdh package is left partially written. The default Node
11
+ * error ("Cannot find module .../personal-data-hub/lib/...") reads like a bug
12
+ * in the package rather than a local-install problem, so users can't
13
+ * self-fix. Centralizing the rewrite here keeps that guidance identical
14
+ * across every pdh load site.
15
+ */
16
+
17
+ /**
18
+ * Turn a raw ESM module-resolution failure for the personal-data-hub package
19
+ * into an actionable "your install is incomplete — repair it" error. Real
20
+ * bugs inside pdh (a TypeError) and unrelated missing modules pass through
21
+ * unchanged.
22
+ */
23
+ export function rewritePdhLoadError(err) {
24
+ const isMissingModule =
25
+ err &&
26
+ (err.code === "ERR_MODULE_NOT_FOUND" ||
27
+ /Cannot find (module|package)/.test(err.message || ""));
28
+ const mentionsPdh = /personal-data-hub/.test(
29
+ (err && (err.url || err.message)) || "",
30
+ );
31
+ if (!isMissingModule || !mentionsPdh) return err;
32
+ const wrapped = new Error(
33
+ "Personal Data Hub package is missing files — your install looks " +
34
+ "incomplete.\n" +
35
+ "This usually means a global install was interrupted (often a running " +
36
+ "`cc`/node process locking a native file).\n" +
37
+ "Repair it with: npm i -g chainlesschain@latest\n" +
38
+ "(close any running `cc` sessions first so the install isn't blocked).\n" +
39
+ `Original error: ${err.message}`,
40
+ );
41
+ wrapped.code = "PDH_INSTALL_INCOMPLETE";
42
+ wrapped.cause = err;
43
+ return wrapped;
44
+ }
45
+
46
+ /**
47
+ * `await import()` a pdh package/subpath specifier, rewriting an
48
+ * incomplete-install resolution failure into the actionable error above.
49
+ * Returns the raw module namespace (caller does its own .default / named
50
+ * destructure, exactly like a bare dynamic import).
51
+ */
52
+ export async function importPdh(spec) {
53
+ try {
54
+ return await import(spec);
55
+ } catch (err) {
56
+ throw rewritePdhLoadError(err);
57
+ }
58
+ }
@@ -26,6 +26,10 @@
26
26
 
27
27
  import { join } from "node:path";
28
28
  import { mkdirSync } from "node:fs";
29
+ import { rewritePdhLoadError } from "./pdh-load-error.js";
30
+ // Test seam (mirrors _atomicWriteJson600): re-exported so the existing
31
+ // pdh-wiring-load-error suite can keep importing it from here.
32
+ export { rewritePdhLoadError as _rewritePdhLoadError } from "./pdh-load-error.js";
29
33
  // Hub package is CJS; in ESM we default-import then destructure (Node 22
30
34
  // won't let us name-import a CJS module unless it ships a separate ESM
31
35
  // shim, which we don't).
@@ -137,44 +141,6 @@ let LocalVault,
137
141
 
138
142
  let _pdhLoadPromise = null;
139
143
 
140
- /**
141
- * Turn a raw ESM module-resolution failure for the personal-data-hub package
142
- * into an actionable "your install is incomplete — repair it" error.
143
- *
144
- * Today this happens when a global `npm i -g chainlesschain` is interrupted
145
- * mid-extraction (commonly a running `cc` / node process holding a lock on a
146
- * native .node file → EBUSY/EPERM), leaving the pdh package partially
147
- * written. The default Node error ("Cannot find module
148
- * .../personal-data-hub/lib/adapters/wechat/index.js") reads like a bug in
149
- * the package rather than a local-install problem, so users can't self-fix.
150
- * Non-resolution errors (a real bug inside pdh) pass through unchanged.
151
- */
152
- function rewritePdhLoadError(err) {
153
- const isMissingModule =
154
- err &&
155
- (err.code === "ERR_MODULE_NOT_FOUND" ||
156
- /Cannot find (module|package)/.test(err.message || ""));
157
- const mentionsPdh = /personal-data-hub/.test(
158
- (err && (err.url || err.message)) || "",
159
- );
160
- if (!isMissingModule || !mentionsPdh) return err;
161
- const wrapped = new Error(
162
- "Personal Data Hub package is missing files — your install looks " +
163
- "incomplete.\n" +
164
- "This usually means a global install was interrupted (often a running " +
165
- "`cc`/node process locking a native file).\n" +
166
- "Repair it with: npm i -g chainlesschain@latest\n" +
167
- "(close any running `cc` sessions first so the install isn't blocked).\n" +
168
- `Original error: ${err.message}`,
169
- );
170
- wrapped.code = "PDH_INSTALL_INCOMPLETE";
171
- wrapped.cause = err;
172
- return wrapped;
173
- }
174
- // Test seam (mirrors _atomicWriteJson600): unit-test the error rewrite
175
- // without provoking a real partial-install.
176
- export { rewritePdhLoadError as _rewritePdhLoadError };
177
-
178
144
  /**
179
145
  * Lazily import the personal-data-hub package + wechat adapter and populate
180
146
  * the module-level binding holders above. Memoized so concurrent
@@ -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-BvqAck49.js";import{_ as E,u as N}from"./index-5-fynKGl.js";import{R as P}from"./icons-DP3uiYxy.js";const j={__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 P},get useWsStore(){return N}};return Object.defineProperty(H,"__isScriptSetup",{enumerable:!1,value:!0}),H}},q={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},z={style:{display:"flex",gap:"10px",margin:"12px 0"}},A={ref:"logContainer",class:"log-box"},D={key:0,style:{"text-align":"center",padding:"40px",color:"var(--text-muted)"}},F={key:1,style:{"text-align":"center",padding:"40px",color:"var(--text-muted)"}},I={key:2},J=["innerHTML"];function Z(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",q,[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",z,[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",A,[e.loading?(p(),g("div",D,[n(L,{size:"large"}),a[6]||(a[6]=d("div",{style:{"margin-top":"10px"}},"加载中...",-1))])):e.filteredLines.length?(p(),g("div",I,[(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",F,S(e.error||"暂无日志内容,点击刷新加载"),1))],512)])}const $=E(j,[["render",Z],["__scopeId","data-v-8c2906e0"],["__file","/tmp/cc-web-panel-L3Pc98/repo/packages/web-panel/src/views/Logs.vue"]]);export{$ as default};
@@ -1 +0,0 @@
1
- import{O as r}from"./index-5-fynKGl.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-CB4Ns1zc.js";import{U as t}from"./index-5-fynKGl.js";import"./vendor-BvqAck49.js";import"./responsiveObserve-BX4PJmtw.js";import"./useFlexGapSupport-C4dr4HyL.js";import"./styleChecker-BK22ABVM.js";import"./index-D3j2PYB3.js";import"./icons-DP3uiYxy.js";const l=t(o);export{l as default};
@@ -1 +0,0 @@
1
- import{C as o}from"./Col-S4VUKCBd.js";import{U as t}from"./index-5-fynKGl.js";import"./vendor-BvqAck49.js";import"./index-D3j2PYB3.js";import"./icons-DP3uiYxy.js";const s=t(o);export{s as default};