chainlesschain 0.162.13 → 0.162.15
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.
- package/README.md +1 -1
- package/package.json +2 -2
- package/src/assets/web-panel/assets/{AIOps-Bq_zxhCr.js → AIOps-Dr5poTWh.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-CaevDm9t.js → ActionButton-DLOGPHQ-.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-B0gOmwPw.js → Analytics-DBlO3FPX.js} +1 -1
- package/src/assets/web-panel/assets/{AppLayout-DWhZiV0Q.js → AppLayout-BrMarmWx.js} +2 -2
- package/src/assets/web-panel/assets/{Audit-ZuZJBCxo.js → Audit-DX6omFqA.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-CX7jhH5l.js → Backup-0QSLlQkB.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-CVLx7HVq.js → BaseInput-Dn4GFfR8.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-C6yL5tRD.js → Chat-CMTeA0Zo.js} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-BePhbqVq.js → Checkbox-BQQxf6iA.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-B5E4x1Lm.js → Codegen-D2vrazFC.js} +1 -1
- package/src/assets/web-panel/assets/{Col-CWhNU6A7.js → Col-P1hVDVKm.js} +1 -1
- package/src/assets/web-panel/assets/{Community-mSEAuJhp.js → Community-CPcDkABv.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-DSudHzX3.js → Compact-DvBQwE-b.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-CxJLYjyn.js → Compliance-GX2qsHkq.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-C-trppQj.js → Cowork-CEEISrBb.js} +1 -1
- package/src/assets/web-panel/assets/{Cron-_Ij4v5fY.js → Cron-Y3D6wB4C.js} +1 -1
- package/src/assets/web-panel/assets/{Crosschain-eLHXzp5T.js → Crosschain-CnCjDKKD.js} +1 -1
- package/src/assets/web-panel/assets/{DID-BP04AUUB.js → DID-CJ2EFB5b.js} +1 -1
- package/src/assets/web-panel/assets/{Dashboard-CzEeQv62.js → Dashboard-CWujrs70.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-C_SGOB22.js → Dropdown-BzKSQA5P.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-BgaP4BOv.js → Federation-DgaAWIwd.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-BxGLLt9r.js → FormItemContext-BitgB4Gb.js} +1 -1
- package/src/assets/web-panel/assets/{Git-Bt_uM_Gw.js → Git-Bzj4vLLf.js} +1 -1
- package/src/assets/web-panel/assets/{Governance-N2-0RG_o.js → Governance-D7DEdSBD.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-eS3g-CzP.js → Inference-CVsGLfcX.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-CUuvNVah.js → KnowledgeGraph-CF6C6ZNo.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-wPbwEt2r.js → Logs-C0Er-tt8.js} +1 -1
- package/src/assets/web-panel/assets/{Marketplace-DH91kTwo.js → Marketplace-_E7uwUUU.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-D-GyyBrI.js → McpTools-dHbktLMV.js} +1 -1
- package/src/assets/web-panel/assets/{Memory-BOtUy-tw.js → Memory-CaQ4UY7b.js} +1 -1
- package/src/assets/web-panel/assets/{MobileBridge-DIP__XQd.js → MobileBridge-BbOh0uJt.js} +1 -1
- package/src/assets/web-panel/assets/{MobileProjects-1nqr1UsU.js → MobileProjects-CfdNEimZ.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-CCE0x7h2.js → Mtc-HLvyepRP.js} +1 -1
- package/src/assets/web-panel/assets/{MtcAudit-BBkz0XUO.js → MtcAudit-DMaHGoIr.js} +1 -1
- package/src/assets/web-panel/assets/{Multisig-CIKSJvTY.js → Multisig-DFNZf0AB.js} +1 -1
- package/src/assets/web-panel/assets/{NLProgramming-BDkgeFcq.js → NLProgramming-cZwXhWy2.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-ONiUxfN1.js → Notes-U_3n8Zid.js} +1 -1
- package/src/assets/web-panel/assets/{NotificationSettings-CGcyKEIe.js → NotificationSettings-B4VvhkKf.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-BZtMYBJt.js → Organization-BIwBFrdX.js} +1 -1
- package/src/assets/web-panel/assets/{Overflow-C4LfFZAI.js → Overflow-_zxR8gF2.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-D71Cpk-m.js → P2P-DJXmWhLC.js} +1 -1
- package/src/assets/web-panel/assets/{Permissions-DRGYF29v.js → Permissions-DwJ35K8Z.js} +1 -1
- package/src/assets/web-panel/assets/{PersonalDataHub-CfRYoIua.js → PersonalDataHub-CzZXLXGN.js} +1 -1
- package/src/assets/web-panel/assets/{Pipeline-BOyp0_Qo.js → Pipeline-DjtRGM8X.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-a_AcphvF.js → Privacy-BJhsIhGf.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-CFu1grYt.js → ProjectInit-DEx5SDLh.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectSettings-p54Eivhh.js → ProjectSettings-B6qDg7nn.js} +1 -1
- package/src/assets/web-panel/assets/{Projects-DkB88XAu.js → Projects-CKkTgrBf.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-EK7f8DEd.js → Providers-3GEshcW_.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-CpO0w3iP.js → QuickAsk-BfUXbKxa.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-BUJVQdv9.js → Recommend-DgxYasSJ.js} +1 -1
- package/src/assets/web-panel/assets/{Reputation-kU2fOuZt.js → Reputation-CWvVg_V1.js} +1 -1
- package/src/assets/web-panel/assets/{Row-oGWRbk6g.js → Row-42M5ot1v.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-saC_46Yo.js → RssFeed-Do3isL1x.js} +1 -1
- package/src/assets/web-panel/assets/{Search-CjtRqFUu.js → Search-_7wgwjaR.js} +1 -1
- package/src/assets/web-panel/assets/{Security-BX0NBVfQ.js → Security-DKB6pe8t.js} +1 -1
- package/src/assets/web-panel/assets/{Services-Bgxsnei_.js → Services-BHrBJAcB.js} +1 -1
- package/src/assets/web-panel/assets/{Skeleton-CwBb3k2a.js → Skeleton-C8L-EfGp.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-CZCMYH6Z.js → Skills-CU66huTh.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-Djy1uHnZ.js → Sla-DA8AKNmI.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-CGUI_Uyh.js → SpeechSettings-CufjYTzV.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-DK2CKHRD.js → SyncSettings-D_VAYHIg.js} +1 -1
- package/src/assets/web-panel/assets/{Tasks-BKiOzeIO.js → Tasks-BE6nYh9k.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-CnQpleXj.js → Templates-BfRbttd6.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-DwKz0cjm.js → Tenant-YO71CL80.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-A7t_wsR8.js → Terminal-D1mQaE_Z.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-BqYY9l44.js → Tokens-CvnNQtX4.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-BI4bXFmi.js → Trigger-BnN19FJt.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-yMynKTRG.js → Trust-C6oZLHqp.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-Br4IScM6.js → UkeySign-BOhFYuWu.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-CWcThGsP.js → VideoEditing-NMc6-qc-.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-CZcAtjxj.js → Wallet-BALmcKtd.js} +1 -1
- package/src/assets/web-panel/assets/{WebAuthn-BnTZFMA0.js → WebAuthn-6IVe-W6O.js} +1 -1
- package/src/assets/web-panel/assets/{WorkflowEditor-N7gGz3_n.js → WorkflowEditor-BIv20DXb.js} +1 -1
- package/src/assets/web-panel/assets/{chat-D175ZIO0.js → chat-CiceyA69.js} +1 -1
- package/src/assets/web-panel/assets/{colors-LKhZyttv.js → colors-CxwvpRW0.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-CsJSebxT.js → compact-item-N6ASDseQ.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-BJ_CPYFC.js → createContext-CQ8PEhyP.js} +1 -1
- package/src/assets/web-panel/assets/{hasIn-CzD3IqH8.js → hasIn-DDiIuryC.js} +1 -1
- package/src/assets/web-panel/assets/{index-BhiZDGg7.js → index-1jBrqw2R.js} +1 -1
- package/src/assets/web-panel/assets/index-1losWCP0.js +1 -0
- package/src/assets/web-panel/assets/{index-CRGNuUIM.js → index-92sMXPmR.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dm-3kvtD.js → index-BCgZTQf8.js} +1 -1
- package/src/assets/web-panel/assets/{index-BZluCuTH.js → index-BKLatStI.js} +1 -1
- package/src/assets/web-panel/assets/{index-CTIkCKav.js → index-BKmY57ry.js} +1 -1
- package/src/assets/web-panel/assets/{index-E7t1hAnk.js → index-BZ4O1Vp7.js} +1 -1
- package/src/assets/web-panel/assets/{index-D7ZcBI5s.js → index-BdmcwwMp.js} +1 -1
- package/src/assets/web-panel/assets/{index-BNVLVzN5.js → index-Bj-mAQFK.js} +1 -1
- package/src/assets/web-panel/assets/{index-R1cFADfk.js → index-BjvirvV4.js} +1 -1
- package/src/assets/web-panel/assets/{index-BvF2tC6C.js → index-Bw6UqIkJ.js} +1 -1
- package/src/assets/web-panel/assets/{index-6qPbrYF7.js → index-BzdEj9_B.js} +1 -1
- package/src/assets/web-panel/assets/{index-BMvdoiFr.js → index-C43WIe_p.js} +1 -1
- package/src/assets/web-panel/assets/{index-BjOrt4vw.js → index-CHsNn-Qv.js} +1 -1
- package/src/assets/web-panel/assets/{index-BsirlkJ0.js → index-COIxnEwP.js} +1 -1
- package/src/assets/web-panel/assets/{index-D401L3yx.js → index-C_dbCu-F.js} +1 -1
- package/src/assets/web-panel/assets/{index-BDSZDDb2.js → index-Cb0QVAZL.js} +3 -3
- package/src/assets/web-panel/assets/{index-BV-__mlC.js → index-CcUK2M7W.js} +1 -1
- package/src/assets/web-panel/assets/{index-DXp1jVsK.js → index-ClASVywF.js} +1 -1
- package/src/assets/web-panel/assets/{index-D8kltMTW.js → index-CnArbjXg.js} +1 -1
- package/src/assets/web-panel/assets/{index-Kn-Of5ew.js → index-Cur_KKpV.js} +1 -1
- package/src/assets/web-panel/assets/{index-RIO4JKMP.js → index-Cwk0olXV.js} +1 -1
- package/src/assets/web-panel/assets/{index-CKjBAdm0.js → index-D0yG93O4.js} +1 -1
- package/src/assets/web-panel/assets/{index-BSNibAqz.js → index-D58a5SL3.js} +1 -1
- package/src/assets/web-panel/assets/{index-uTEVWPYA.js → index-DEjAgx2R.js} +1 -1
- package/src/assets/web-panel/assets/{index-DJVkBmSc.js → index-DUKjS4kF.js} +1 -1
- package/src/assets/web-panel/assets/{index-BmJdof_c.js → index-DWKigrAM.js} +1 -1
- package/src/assets/web-panel/assets/{index-C2HBKw07.js → index-DcMESTJs.js} +1 -1
- package/src/assets/web-panel/assets/{index-DnPt5OdD.js → index-DgwpVvQq.js} +1 -1
- package/src/assets/web-panel/assets/{index-DOO73rHE.js → index-Dj2wgF3A.js} +1 -1
- package/src/assets/web-panel/assets/{index-D5IZCkZG.js → index-DobYLmfZ.js} +1 -1
- package/src/assets/web-panel/assets/{index-JTX9A7w0.js → index-Dp3r80qO.js} +1 -1
- package/src/assets/web-panel/assets/{index-CyHdYUeZ.js → index-DtpWqJ-2.js} +1 -1
- package/src/assets/web-panel/assets/index-EoP_WtDt.js +1 -0
- package/src/assets/web-panel/assets/{index-BEDFHKO3.js → index-_BHtKVC_.js} +1 -1
- package/src/assets/web-panel/assets/{index-BXH9ujMW.js → index-bYorCa3r.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dd7dICwB.js → index-hn9LVkIY.js} +1 -1
- package/src/assets/web-panel/assets/{index-B7UYymse.js → index-mmpauJ3E.js} +1 -1
- package/src/assets/web-panel/assets/{index-DM3uBEWD.js → index-xQlQRo2j.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-CBW0okek.js → initDefaultProps-1MKZtqXZ.js} +1 -1
- package/src/assets/web-panel/assets/{motion-DGAffQ0Z.js → motion-DFBQpRS8.js} +1 -1
- package/src/assets/web-panel/assets/{move-DFJ0-5IW.js → move-CiI8Ada0.js} +1 -1
- package/src/assets/web-panel/assets/{omit-AvrDghg1.js → omit-CjeFoPcC.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-D7csw9i1.js → pickAttrs-Be3kefJq.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-hZ6Lg6kG.js → placementArrow-Be5Ra1_B.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-DLLx5VvS.js → responsiveObserve-NCu3YHiX.js} +1 -1
- package/src/assets/web-panel/assets/{slide-BaRIT3ev.js → slide-f23lSB4X.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-Cdjyuhrz.js → statusUtils-Dq99US_U.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-CbrNybTt.js → styleChecker-B-UUq5Ww.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-B8gAhiRC.js → useFlexGapSupport-D6aUzeVO.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-BZPy4ICP.js → useFs-DU-R5a4I.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-6Y0NDMVv.js → vnode-N7r8LSGe.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-DTbMGsSH.js → zoom-07xoxB1t.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/commands/__tests__/android.test.js +260 -0
- package/src/commands/__tests__/hub-wechat.test.js +186 -15
- package/src/commands/android.js +284 -0
- package/src/commands/hub.js +263 -19
- package/src/gateways/ws/personal-data-hub-protocol.js +28 -8
- package/src/index.js +2 -0
- package/src/lib/__tests__/cc-android-bridge.test.js +245 -0
- package/src/lib/cc-android-bridge.js +206 -0
- package/src/lib/personal-data-hub-wiring.js +98 -20
- package/src/lib/web-ui-server.js +2 -1
- package/src/assets/web-panel/assets/index-CY1mQA2I.js +0 -1
- package/src/assets/web-panel/assets/index-D9nXHfUB.js +0 -1
|
@@ -44,6 +44,8 @@ const {
|
|
|
44
44
|
generateKeyHex,
|
|
45
45
|
EmailAdapter,
|
|
46
46
|
AlipayBillAdapter,
|
|
47
|
+
SystemDataAndroidAdapter,
|
|
48
|
+
BilibiliAdapter,
|
|
47
49
|
EntityResolver,
|
|
48
50
|
EntityResolverEmbeddingStage,
|
|
49
51
|
EntityResolverLLMStage,
|
|
@@ -60,8 +62,13 @@ import {
|
|
|
60
62
|
} from "./personal-data-hub-aichat-wizard.js";
|
|
61
63
|
|
|
62
64
|
async function loadAIChatHealthChecker() {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
+
// Composed-at-runtime specifier so vite import-analysis (which fails
|
|
66
|
+
// to resolve subpath exports for dynamic imports in vitest SSR mode)
|
|
67
|
+
// skips this — the static scanner only descends into string literals.
|
|
68
|
+
const spec =
|
|
69
|
+
"@chainlesschain/personal-data-hub" +
|
|
70
|
+
"/adapters/ai-chat-history/health-checker";
|
|
71
|
+
const mod = await import(spec);
|
|
65
72
|
return (mod.default || mod).createAIChatHealthChecker;
|
|
66
73
|
}
|
|
67
74
|
|
|
@@ -95,6 +102,28 @@ let _hub = null;
|
|
|
95
102
|
let _initPromise = null;
|
|
96
103
|
let _bm25 = null;
|
|
97
104
|
|
|
105
|
+
// LLM override — see file header. Default cli-side hub uses a direct
|
|
106
|
+
// OllamaClient; when the desktop main process embeds this wiring via
|
|
107
|
+
// ws-cli-loader it can inject a CcLLMAdapter (wrapping LLMManager) so the
|
|
108
|
+
// SAME wiring honors the user's active provider (volcengine / anthropic /
|
|
109
|
+
// etc.) instead of hard-binding Ollama. Must be set BEFORE the first
|
|
110
|
+
// getHub() call — initHub() reads it synchronously at the LLM-wiring step.
|
|
111
|
+
let _llmOverride = null;
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Override the default cli-side OllamaClient with a caller-supplied LLM
|
|
115
|
+
* client conforming to the hub's LLMClient contract ({ chat, name, isLocal }).
|
|
116
|
+
*
|
|
117
|
+
* Used by desktop-app-vue web-shell's ws-cli-loader bootstrap: see
|
|
118
|
+
* desktop-app-vue/src/main/web-shell/ws-cli-loader.js. Calling this on
|
|
119
|
+
* an already-initialized hub does NOT swap the live LLM — the override only
|
|
120
|
+
* applies on the next fresh initHub(). Restart the process if you need to
|
|
121
|
+
* change provider mid-session.
|
|
122
|
+
*/
|
|
123
|
+
export function setHubLLMOverride(llm) {
|
|
124
|
+
_llmOverride = llm || null;
|
|
125
|
+
}
|
|
126
|
+
|
|
98
127
|
export function resolveHubDir() {
|
|
99
128
|
return join(getElectronUserDataDir(), ".chainlesschain", "hub");
|
|
100
129
|
}
|
|
@@ -115,12 +144,16 @@ async function initHub() {
|
|
|
115
144
|
const vault = new LocalVault({ path: join(hubDir, "vault.db"), key });
|
|
116
145
|
vault.open();
|
|
117
146
|
|
|
118
|
-
// LLM:
|
|
119
|
-
//
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
147
|
+
// LLM: prefer caller-injected override (desktop web-shell wires CcLLMAdapter
|
|
148
|
+
// wrapping LLMManager so PDH honors the user's saved active provider).
|
|
149
|
+
// Fallback to standalone OllamaClient — connects to localhost:11434.
|
|
150
|
+
// Override the fallback via env CC_HUB_OLLAMA_URL / CC_HUB_OLLAMA_MODEL.
|
|
151
|
+
const llm =
|
|
152
|
+
_llmOverride ||
|
|
153
|
+
new OllamaClient({
|
|
154
|
+
baseUrl: process.env.CC_HUB_OLLAMA_URL || "http://localhost:11434",
|
|
155
|
+
model: process.env.CC_HUB_OLLAMA_MODEL || "qwen2.5:7b-instruct",
|
|
156
|
+
});
|
|
124
157
|
|
|
125
158
|
// KG sink — direct ESM import works here.
|
|
126
159
|
let kgSink = null;
|
|
@@ -147,20 +180,33 @@ async function initHub() {
|
|
|
147
180
|
|
|
148
181
|
// Phase 8 — EntityResolver pipeline
|
|
149
182
|
const entityResolver = new EntityResolver({ vault });
|
|
183
|
+
// Plan A v0.1 — in-APK Android cc has no Ollama on localhost:11434.
|
|
184
|
+
// Every embedding call would TCP-timeout (measured: ~60s extra per sync
|
|
185
|
+
// on Xiaomi 24115RA8EC 2026-05-21). Detect Termux $PREFIX for our APK
|
|
186
|
+
// and skip embedding+LLM stages entirely. Rule-stage still runs; the
|
|
187
|
+
// resolve_queue picks up enqueued pairs later if a host with Ollama is
|
|
188
|
+
// ever attached (e.g. desktop-side replay).
|
|
189
|
+
const isInAppAndroidCc =
|
|
190
|
+
typeof process.env.PREFIX === "string" &&
|
|
191
|
+
process.env.PREFIX.startsWith("/data/data/com.chainlesschain.android");
|
|
192
|
+
const skipEmbeddings =
|
|
193
|
+
isInAppAndroidCc || process.env.CC_HUB_DISABLE_EMBEDDINGS === "1";
|
|
150
194
|
try {
|
|
151
|
-
if (llm) {
|
|
195
|
+
if (llm && !skipEmbeddings) {
|
|
152
196
|
const llmStage = new EntityResolverLLMStage({
|
|
153
197
|
llm,
|
|
154
198
|
acceptNonLocal: false,
|
|
155
199
|
});
|
|
156
200
|
entityResolver._llmStage = llmStage.asStageFn();
|
|
157
201
|
}
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
202
|
+
if (!skipEmbeddings) {
|
|
203
|
+
const embeddingStage = new EntityResolverEmbeddingStage({
|
|
204
|
+
ollamaUrl: process.env.CC_HUB_OLLAMA_URL || "http://localhost:11434",
|
|
205
|
+
model: process.env.CC_HUB_OLLAMA_EMBED_MODEL || "nomic-embed-text",
|
|
206
|
+
vault,
|
|
207
|
+
});
|
|
208
|
+
entityResolver._embeddingStage = embeddingStage.asStageFn();
|
|
209
|
+
}
|
|
164
210
|
} catch (_err) {
|
|
165
211
|
// Fall back to rule-only — registry still works
|
|
166
212
|
}
|
|
@@ -210,6 +256,35 @@ async function initHub() {
|
|
|
210
256
|
}
|
|
211
257
|
}
|
|
212
258
|
|
|
259
|
+
// Plan A v0.1 — Android on-device system-data adapter. Stateless: the UI
|
|
260
|
+
// produces a snapshot JSON via ContentResolver/PackageManager and passes
|
|
261
|
+
// its path through opts.inputPath at sync-time, so registration is a
|
|
262
|
+
// one-shot wire here. Safe to register on every host (no-op until a sync
|
|
263
|
+
// call provides inputPath); future hosts may filter by platform if useful.
|
|
264
|
+
try {
|
|
265
|
+
const sda = new SystemDataAndroidAdapter();
|
|
266
|
+
if (!registry.has(sda.name)) registry.register(sda);
|
|
267
|
+
} catch (_err) {
|
|
268
|
+
// Boot must continue even if the adapter fails to register; cc hub will
|
|
269
|
+
// surface the absence via list-adapters.
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
// A8 v0.1 (2026-05-22) — social adapters in snapshot mode. Stateless: the
|
|
273
|
+
// Android UI captures a cookie via in-app WebView, runs OkHttp against the
|
|
274
|
+
// platform's HTTP API, parses the JSON response, writes a snapshot JSON to
|
|
275
|
+
// filesDir/.chainlesschain/staging/, then calls `cc hub sync-adapter <name>
|
|
276
|
+
// --input <path> --json` via LocalCcRunner. The adapter reads the file and
|
|
277
|
+
// yields events; the same registry handles KG + RAG + vault writes — no
|
|
278
|
+
// desktop connection required (this is the desktop-independent path the
|
|
279
|
+
// user repeatedly asked about). Each adapter no-ops at boot when no
|
|
280
|
+
// snapshot has been produced yet.
|
|
281
|
+
try {
|
|
282
|
+
const bilibili = new BilibiliAdapter();
|
|
283
|
+
if (!registry.has(bilibili.name)) registry.register(bilibili);
|
|
284
|
+
} catch (_err) {
|
|
285
|
+
// Continue boot
|
|
286
|
+
}
|
|
287
|
+
|
|
213
288
|
// Phase 6: auto-register persisted Alipay accounts.
|
|
214
289
|
const alipayAccountsPath = join(hubDir, "alipay-accounts.json");
|
|
215
290
|
const alipayAccounts = loadAlipayAccounts(alipayAccountsPath);
|
|
@@ -442,7 +517,11 @@ async function initHub() {
|
|
|
442
517
|
|
|
443
518
|
async registerWechatAdapter(opts = {}) {
|
|
444
519
|
if (!opts || !opts.account || !opts.account.uin) {
|
|
445
|
-
return {
|
|
520
|
+
return {
|
|
521
|
+
ok: false,
|
|
522
|
+
reason: "UIN_REQUIRED",
|
|
523
|
+
message: "opts.account.uin required",
|
|
524
|
+
};
|
|
446
525
|
}
|
|
447
526
|
let r;
|
|
448
527
|
try {
|
|
@@ -476,7 +555,8 @@ async function initHub() {
|
|
|
476
555
|
account: { uin: opts.account.uin },
|
|
477
556
|
dbPath: opts.dbPath || null,
|
|
478
557
|
wechatDataPath: opts.wechatDataPath || null,
|
|
479
|
-
chosenKeyProvider:
|
|
558
|
+
chosenKeyProvider:
|
|
559
|
+
r.keyProvider && r.keyProvider.name ? r.keyProvider.name : null,
|
|
480
560
|
registeredAt: Date.now(),
|
|
481
561
|
lastSyncAt: null,
|
|
482
562
|
});
|
|
@@ -500,9 +580,7 @@ async function initHub() {
|
|
|
500
580
|
}
|
|
501
581
|
const wechatAccountsPath = join(hubDir, "wechat-accounts.json");
|
|
502
582
|
const accounts = loadWechatAccounts(wechatAccountsPath);
|
|
503
|
-
const target = accounts.find(
|
|
504
|
-
(c) => c.account && c.account.uin === uin,
|
|
505
|
-
);
|
|
583
|
+
const target = accounts.find((c) => c.account && c.account.uin === uin);
|
|
506
584
|
const next = accounts.filter(
|
|
507
585
|
(c) => !(c.account && c.account.uin === uin),
|
|
508
586
|
);
|
package/src/lib/web-ui-server.js
CHANGED
|
@@ -1211,7 +1211,8 @@ function findWebPanelDist(staticDir) {
|
|
|
1211
1211
|
return fs.existsSync(path.join(staticDir, "index.html")) ? staticDir : null;
|
|
1212
1212
|
}
|
|
1213
1213
|
// 1. Source tree: packages/web-panel/dist/
|
|
1214
|
-
|
|
1214
|
+
// __dirname = packages/cli/src/lib/ so we need three "../" to reach packages/.
|
|
1215
|
+
const sourceDist = path.resolve(__dirname, "../../../web-panel/dist");
|
|
1215
1216
|
if (fs.existsSync(path.join(sourceDist, "index.html"))) {
|
|
1216
1217
|
return sourceDist;
|
|
1217
1218
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{A as o}from"./Row-oGWRbk6g.js";import{S as t}from"./index-BDSZDDb2.js";import"./responsiveObserve-DLLx5VvS.js";import"./vendor-DhFY8mDK.js";import"./useFlexGapSupport-B8gAhiRC.js";import"./styleChecker-CbrNybTt.js";import"./index-BZluCuTH.js";import"./icons-BOPtEWK4.js";const l=t(o);export{l as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{C as o}from"./Col-CWhNU6A7.js";import{S as t}from"./index-BDSZDDb2.js";import"./index-BZluCuTH.js";import"./vendor-DhFY8mDK.js";import"./icons-BOPtEWK4.js";const s=t(o);export{s as default};
|