chainlesschain 0.161.8 → 0.161.10
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/package.json +2 -1
- package/src/assets/web-panel/.build-hash +1 -1
- package/src/assets/web-panel/assets/{AIOps-Uls1XIO4.js → AIOps-CmCGAwDv.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-BpVrefl1.js → ActionButton-eeaISbP3.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-Z1Rgg9PA.js → Analytics-CJEX10hA.js} +2 -2
- package/src/assets/web-panel/assets/AppLayout-BpbfrB7k.css +1 -0
- package/src/assets/web-panel/assets/AppLayout-CrYEU1PZ.js +3 -0
- package/src/assets/web-panel/assets/{Audit-Co6yYgmX.js → Audit-B4BUSPse.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-1IZDB3QD.js → Backup-DIDcWoL9.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-LYB_wIZP.js → BaseInput-CuJjCIcU.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-D-6LDWGl.js → Chat-D-yEkssi.js} +3 -3
- package/src/assets/web-panel/assets/{Checkbox-dLnnw7OE.js → Checkbox-Bww7tFNj.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-Wh6xypMx.js → Codegen-D9k-kRxr.js} +1 -1
- package/src/assets/web-panel/assets/{Col-BT8lkjSw.js → Col-CWhmQejT.js} +1 -1
- package/src/assets/web-panel/assets/{Community-CdAeMHde.js → Community-Ck1ojsb1.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-VsImrjgV.js → Compact-CuDFE-4P.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-PScuVx8d.js → Compliance-BSOLLyKA.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-qB8hRW0r.js → Cowork-BiOMErjG.js} +3 -3
- package/src/assets/web-panel/assets/{Cron-CuSjuE-h.js → Cron-DnVm70q-.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-BqIRd8bv.js → Crosschain-CqIVrbR9.js} +1 -1
- package/src/assets/web-panel/assets/{DID-BT5BJ0DF.js → DID-DS9MUwUx.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-BX-06zEm.js → Dashboard-BlrXX2bG.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-Pjo3G3Vf.js → Dropdown-CqBG_led.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-BbnYcYhr.js → Federation-DCBYjpOX.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-C3hf4K1_.js → FormItemContext-DQUjKw5j.js} +1 -1
- package/src/assets/web-panel/assets/{Git-Cmw6_HXW.js → Git-pitws4KW.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-BFBvB2G6.js → Governance-BNG31zqe.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-BBdX3YjM.js → Inference-W32jdXsU.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-BC-bcvNY.js → KnowledgeGraph-_qBNRolE.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-B9DuqFeW.js → Logs-BnnANM_j.js} +1 -1
- package/src/assets/web-panel/assets/{Marketplace-Bff1ja4R.js → Marketplace-C6OwNTw7.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-DnWqjtkb.js → McpTools-D7cbYTwR.js} +3 -3
- package/src/assets/web-panel/assets/{Memory-C6YXBuM7.js → Memory-7kL8dh9_.js} +2 -2
- package/src/assets/web-panel/assets/MobileBridge-B5ZSxpt9.js +3 -0
- package/src/assets/web-panel/assets/MobileBridge-DkkMCDx9.css +1 -0
- package/src/assets/web-panel/assets/{Mtc-r-J4WRfp.js → Mtc-DOm5jweE.js} +4 -4
- package/src/assets/web-panel/assets/{MtcAudit-DFqXLHn6.js → MtcAudit-D9rDFqWR.js} +1 -1
- package/src/assets/web-panel/assets/Multisig-CVqb7ayL.js +1 -0
- package/src/assets/web-panel/assets/Multisig-D-IuEDLa.css +1 -0
- package/src/assets/web-panel/assets/{NLProgramming-s5CrjYto.js → NLProgramming-BETAJaqD.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-TAbnvDCd.js → Notes-CUJ1PDmG.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-BZIKI219.js → NotificationSettings-BauSiotO.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-BXbSljYa.js → Organization-B0T5PGg4.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-O2RWHZxH.js → Overflow-CHLIn241.js} +1 -1
- package/src/assets/web-panel/assets/{OverrideContext-DSwW21YS.js → OverrideContext-DYxbd09I.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-B8jBZLh6.js → P2P-yqfDCE9U.js} +2 -2
- package/src/assets/web-panel/assets/{Permissions-Cexi8Jr6.js → Permissions-DWu7ec_n.js} +4 -4
- package/src/assets/web-panel/assets/{Pipeline-BwIBnNzj.js → Pipeline-BPXGoHep.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-D-LOR9um.js → Privacy-B2fRmhNs.js} +1 -1
- package/src/assets/web-panel/assets/ProjectInit-CteEo-wF.css +1 -0
- package/src/assets/web-panel/assets/{Projects-Bis42Cb6.js → ProjectInit-dPr0sgSZ.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-DZ_fdRRJ.js → ProjectSettings-dKjwdfXX.js} +1 -1
- package/src/assets/web-panel/assets/Projects-C34BWmmy.css +1 -0
- package/src/assets/web-panel/assets/Projects-fRCTrULX.js +1 -0
- package/src/assets/web-panel/assets/{Providers-DH6hY4Gx.js → Providers-OpB_FLki.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-Ur0bUXHK.js → QuickAsk-B0gFMvI8.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-CLDQjSf6.js → Recommend-C2NwxWiR.js} +1 -1
- package/src/assets/web-panel/assets/{Reputation-StG-zGil.js → Reputation-CTBtQ8Bi.js} +1 -1
- package/src/assets/web-panel/assets/{Row-DAWA1cwa.js → Row-CQ36tMlO.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-rb2CP-IS.js → RssFeed-ChOug33H.js} +3 -3
- package/src/assets/web-panel/assets/{Search-Y9qsWaAE.js → Search-DrlVYajZ.js} +1 -1
- package/src/assets/web-panel/assets/{Security-BanZDWBe.js → Security-BxWm_HMW.js} +3 -3
- package/src/assets/web-panel/assets/{Services-DFOMZwqJ.js → Services-Bq__zdi1.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-Cy48VmyC.js → Skeleton-D2BPihBx.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-BqdkGRyO.js → Skills-Q1ZtavwR.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-B8lXq9rJ.js → Sla-CyIKjjSg.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-CmIkYpWT.js → SpeechSettings-DPddWDCV.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-tZDaJZ0S.js → SyncSettings-CY-Fdii1.js} +1 -1
- package/src/assets/web-panel/assets/{Tasks-DxBlrylF.js → Tasks-DAWxFePY.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-ByshgJtu.js → Templates-CuIQmfXP.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-DCpEpRf1.js → Tenant-CYsUC_mL.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-BIUug_M_.js → Tokens-DpwM8qKh.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-DY4iT_Sv.js → Trigger-CBHUHnc-.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-fAtm0ohe.js → Trust-DfQZgxcX.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-CwbV_ITc.js → UkeySign-BcOnuHWe.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-CBJ5dw8E.js → VideoEditing-Ci-c6HHb.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-B1fyWeNC.js → Wallet-DBuVM9t_.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-by6IZMeB.js → WebAuthn-Dc3XC6-l.js} +5 -5
- package/src/assets/web-panel/assets/{WorkflowEditor-DZkBKsSU.js → WorkflowEditor-BFBZCgWB.js} +1 -1
- package/src/assets/web-panel/assets/{chat-CKAWhBMH.js → chat-tqUunmHQ.js} +1 -1
- package/src/assets/web-panel/assets/{collapseMotion-6-_FbiKl.js → collapseMotion-CZQhO80h.js} +1 -1
- package/src/assets/web-panel/assets/{colors-DgRS7Mb2.js → colors-7dfqj18R.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-CQUZCSRU.js → compact-item-_8YefjuR.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-DgOciZHM.js → createContext-CPZ59Zcw.js} +1 -1
- package/src/assets/web-panel/assets/{echarts-BrEnqXDv.js → echarts-TwhxblyG.js} +1 -1
- package/src/assets/web-panel/assets/{hasIn-DEXVOypF.js → hasIn-BidaS7SK.js} +1 -1
- package/src/assets/web-panel/assets/icons-Q99MnhG8.js +57 -0
- package/src/assets/web-panel/assets/{index-wPVZuwWm.js → index-51Z_iRMU.js} +2 -2
- package/src/assets/web-panel/assets/{index-BYrBEkTv.js → index-B3-Fdfqy.js} +1 -1
- package/src/assets/web-panel/assets/{index-nMw96bEM.js → index-BJmJfXGw.js} +1 -1
- package/src/assets/web-panel/assets/{index-HE37tYPs.js → index-BUlPL2uR.js} +1 -1
- package/src/assets/web-panel/assets/{index-ZOpqRGzA.js → index-B_pQvbuN.js} +1 -1
- package/src/assets/web-panel/assets/{index-D8S-7oDQ.js → index-BqsvxElz.js} +9 -9
- package/src/assets/web-panel/assets/{index-CS3fI6_d.js → index-BtBRkcWM.js} +1 -1
- package/src/assets/web-panel/assets/{index-CCuIY7Ff.js → index-C0MN4j0q.js} +1 -1
- package/src/assets/web-panel/assets/{index-D1dIizuf.js → index-CAUH-6ta.js} +1 -1
- package/src/assets/web-panel/assets/{index-o6vVX9C_.js → index-CG0swGFV.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bo43zHIV.js → index-CLceS3rm.js} +1 -1
- package/src/assets/web-panel/assets/{index-DkBSIb9k.js → index-CW90j-dZ.js} +1 -1
- package/src/assets/web-panel/assets/{index-hfGZzUzb.js → index-Ca0EAS0W.js} +1 -1
- package/src/assets/web-panel/assets/index-Ca5Qc31r.js +1 -0
- package/src/assets/web-panel/assets/{index-B1USa9q3.js → index-CmCovo5r.js} +1 -1
- package/src/assets/web-panel/assets/{index-CQepaPId.js → index-CvkR7sYL.js} +1 -1
- package/src/assets/web-panel/assets/{index-D3tqZAdL.js → index-Cw1VkvZr.js} +1 -1
- package/src/assets/web-panel/assets/{index-D2PDzVV6.js → index-Cxwyyzpd.js} +1 -1
- package/src/assets/web-panel/assets/{index-DBRA1wFF.js → index-Cxy6yDHf.js} +1 -1
- package/src/assets/web-panel/assets/{index-DpL-43E_.js → index-CzARuKje.js} +1 -1
- package/src/assets/web-panel/assets/{index-BQDGHgXQ.js → index-D7yjk-E8.js} +1 -1
- package/src/assets/web-panel/assets/{index-1EDbawpk.js → index-D8upWkW0.js} +1 -1
- package/src/assets/web-panel/assets/{index-DW_-28b4.js → index-D95E7B-a.js} +1 -1
- package/src/assets/web-panel/assets/{index-DjQzFo-O.js → index-DJa3dvQf.js} +1 -1
- package/src/assets/web-panel/assets/{index-BEnMJ3rw.js → index-DJfKgyA-.js} +1 -1
- package/src/assets/web-panel/assets/{index-Ce57JGJq.js → index-DMRsx5W4.js} +1 -1
- package/src/assets/web-panel/assets/index-DP7namG9.js +21 -0
- package/src/assets/web-panel/assets/{index-jLpDpunJ.js → index-DTmWBWkJ.js} +1 -1
- package/src/assets/web-panel/assets/{index-CH5YkJC9.js → index-DTwrQg1G.js} +1 -1
- package/src/assets/web-panel/assets/{index-_Oe8Zr99.js → index-DWSEcCO0.js} +1 -1
- package/src/assets/web-panel/assets/{index-BMx0R9Vw.js → index-D_vErh-N.js} +1 -1
- package/src/assets/web-panel/assets/{index-BjpS0vcp.js → index-DccwP9Op.js} +1 -1
- package/src/assets/web-panel/assets/{index-CetlLBjh.js → index-Dev3hWia.js} +1 -1
- package/src/assets/web-panel/assets/{index-CEt0RfAY.js → index-DfHN8qWn.js} +1 -1
- package/src/assets/web-panel/assets/index-Ds3hIeDc.js +1 -0
- package/src/assets/web-panel/assets/{index-nIXYg_tf.js → index-DsykGbFs.js} +1 -1
- package/src/assets/web-panel/assets/{index-bRI-SvZ-.js → index-OZ08PLpO.js} +1 -1
- package/src/assets/web-panel/assets/index-QVPLcn-I.js +1 -0
- package/src/assets/web-panel/assets/{index-B-g1My7q.js → index-Xg1JWxyg.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-BSTz5E8D.js → initDefaultProps-DBQ94EVq.js} +1 -1
- package/src/assets/web-panel/assets/{markdown-xjUYbPSW.js → markdown-CsiA8-E5.js} +1 -1
- package/src/assets/web-panel/assets/{markdown-vYH_ziAO.js → markdown-Yo_c6Krv.js} +1 -1
- package/src/assets/web-panel/assets/{motion-B10pjDA-.js → motion-BAgV2nZt.js} +1 -1
- package/src/assets/web-panel/assets/{move-B_PFOXXn.js → move-CPhu8BHp.js} +1 -1
- package/src/assets/web-panel/assets/{omit-Bf31gUOR.js → omit-BKpLUN0q.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-CTOOvnV9.js → pickAttrs-BicOrtU0.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-DfXqIy1B.js → placementArrow-D2-Ct0PH.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-BonUzZVT.js → responsiveObserve-DGFr293p.js} +1 -1
- package/src/assets/web-panel/assets/{slide-DtkoQrl3.js → slide-C7zAHcKr.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-BJlmtjwo.js → statusUtils-ByfnDIgi.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-CoQ2DFN_.js → styleChecker-C-ldcMcB.js} +1 -1
- package/src/assets/web-panel/assets/useFlexGapSupport-CKCvqfWX.js +1 -0
- package/src/assets/web-panel/assets/{useFs-DNCH6P7V.js → useFs-yX-MUKbZ.js} +1 -1
- package/src/assets/web-panel/assets/{useMergedState-n0f81Aew.js → useMergedState-D3PX36GT.js} +1 -1
- package/src/assets/web-panel/assets/{useRefs-CTh0C9xI.js → useRefs-opfcK7Pm.js} +1 -1
- package/src/assets/web-panel/assets/{useState-4T1Ntfpx.js → useState-Cp5WlLTS.js} +1 -1
- package/src/assets/web-panel/assets/{vendor-Ci2pTZ_t.js → vendor-BVLz_z7V.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-CAFNU-3N.js → vnode-CW-Z-Xwr.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-Beg44Pk9.js → zoom-DR60LSPO.js} +1 -1
- package/src/assets/web-panel/index.html +3 -3
- package/src/commands/marketplace.js +286 -0
- package/src/commands/mtc.js +1 -1
- package/src/commands/multisig.js +471 -0
- package/src/commands/p2p.js +114 -7
- package/src/commands/project.js +258 -0
- package/src/index.js +5 -0
- package/src/lib/audit-mtc.js +1 -1
- package/src/lib/multisig-runtime.js +160 -0
- package/src/lib/p2p-manager.js +96 -2
- package/src/lib/project-runtime.js +171 -0
- package/src/assets/web-panel/assets/AppLayout-GvY1b95g.js +0 -1
- package/src/assets/web-panel/assets/AppLayout-P7jhSfLy.css +0 -1
- package/src/assets/web-panel/assets/Projects-B5IgXt-x.css +0 -1
- package/src/assets/web-panel/assets/icons-B2G69bhT.js +0 -57
- package/src/assets/web-panel/assets/index-DLnvncqr.js +0 -1
- package/src/assets/web-panel/assets/index-DsmrJv8Y.js +0 -21
- package/src/assets/web-panel/assets/index-Rvjbak1o.js +0 -1
- package/src/assets/web-panel/assets/useFlexGapSupport-BD9H_ICR.js +0 -1
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v1.3+ #21 P1 — `cc project` CLI 共享 runtime。
|
|
3
|
+
*
|
|
4
|
+
* 设计目标 (per v1.2 GA 反馈 "目标在手机端做ai项目的交互要像在电脑端那样丝滑"):
|
|
5
|
+
* CLI 直接读写 desktop app 的 chainlesschain.db, init/list/delete 立刻在
|
|
6
|
+
* desktop UI 出现, Phase 3d sync 同步到手机端 — 无中间层延迟。
|
|
7
|
+
*
|
|
8
|
+
* DB 路径解析: 跟随 Electron app.getPath("userData") 约定:
|
|
9
|
+
* Windows: %APPDATA%/chainlesschain-desktop-vue/data/chainlesschain.db
|
|
10
|
+
* macOS: ~/Library/Application Support/chainlesschain-desktop-vue/data/chainlesschain.db
|
|
11
|
+
* Linux: ~/.config/chainlesschain-desktop-vue/data/chainlesschain.db
|
|
12
|
+
*
|
|
13
|
+
* SQLite driver cascade (per memory feedback_sqlite_wasm_fallback):
|
|
14
|
+
* better-sqlite3-multiple-ciphers → better-sqlite3 → sql.js (WASM)
|
|
15
|
+
*
|
|
16
|
+
* 并发: desktop app 运行时也开同一 DB, 走 WAL mode 允许多读单写, 短查询无冲突。
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
import fs from "node:fs";
|
|
20
|
+
import os from "node:os";
|
|
21
|
+
import path from "node:path";
|
|
22
|
+
import { createRequire } from "node:module";
|
|
23
|
+
|
|
24
|
+
const requireCjs = createRequire(import.meta.url);
|
|
25
|
+
|
|
26
|
+
/** Mirror Electron userData resolution for desktop-app-vue. */
|
|
27
|
+
export function defaultDesktopUserDataDir() {
|
|
28
|
+
const home = os.homedir();
|
|
29
|
+
const productName = "chainlesschain-desktop-vue";
|
|
30
|
+
switch (process.platform) {
|
|
31
|
+
case "win32":
|
|
32
|
+
return path.join(
|
|
33
|
+
process.env.APPDATA || path.join(home, "AppData", "Roaming"),
|
|
34
|
+
productName,
|
|
35
|
+
);
|
|
36
|
+
case "darwin":
|
|
37
|
+
return path.join(home, "Library", "Application Support", productName);
|
|
38
|
+
default:
|
|
39
|
+
return path.join(
|
|
40
|
+
process.env.XDG_CONFIG_HOME || path.join(home, ".config"),
|
|
41
|
+
productName,
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/** Desktop SQLite DB path (shared with desktop app). */
|
|
47
|
+
export function defaultProjectDbPath() {
|
|
48
|
+
return path.join(defaultDesktopUserDataDir(), "data", "chainlesschain.db");
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
async function _openDatabase(dbPath) {
|
|
52
|
+
if (!fs.existsSync(dbPath)) {
|
|
53
|
+
const e = new Error(
|
|
54
|
+
`Desktop DB not found at: ${dbPath}\n` +
|
|
55
|
+
`Has the desktop app ever been launched? It creates the DB on first run.`,
|
|
56
|
+
);
|
|
57
|
+
e.code = "DB_NOT_FOUND";
|
|
58
|
+
throw e;
|
|
59
|
+
}
|
|
60
|
+
for (const pkg of ["better-sqlite3-multiple-ciphers", "better-sqlite3"]) {
|
|
61
|
+
try {
|
|
62
|
+
const Database = requireCjs(pkg);
|
|
63
|
+
const db = new Database(dbPath);
|
|
64
|
+
// WAL mode: desktop app may be running concurrently. WAL allows
|
|
65
|
+
// multiple readers + one writer with no contention for short ops.
|
|
66
|
+
db.pragma("journal_mode = WAL");
|
|
67
|
+
db.pragma("foreign_keys = ON");
|
|
68
|
+
return { kind: "native", db, close: () => db.close() };
|
|
69
|
+
} catch (_e) {
|
|
70
|
+
/* try next */
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
const initSqlJs = requireCjs("sql.js");
|
|
74
|
+
const SQL = await initSqlJs();
|
|
75
|
+
const buf = fs.readFileSync(dbPath);
|
|
76
|
+
const sqlDb = new SQL.Database(buf);
|
|
77
|
+
return {
|
|
78
|
+
kind: "wasm",
|
|
79
|
+
db: _adaptSqlJs(sqlDb),
|
|
80
|
+
close: () => {
|
|
81
|
+
// WASM: write back on close. Desktop should be closed to avoid race.
|
|
82
|
+
const out = sqlDb.export();
|
|
83
|
+
fs.writeFileSync(dbPath, Buffer.from(out));
|
|
84
|
+
sqlDb.close();
|
|
85
|
+
},
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
function _adaptSqlJs(sqlDb) {
|
|
90
|
+
return {
|
|
91
|
+
prepare(sql) {
|
|
92
|
+
return {
|
|
93
|
+
run(...params) {
|
|
94
|
+
const stmt = sqlDb.prepare(sql);
|
|
95
|
+
try {
|
|
96
|
+
stmt.bind(params);
|
|
97
|
+
stmt.step();
|
|
98
|
+
return { changes: sqlDb.getRowsModified(), lastInsertRowid: 0 };
|
|
99
|
+
} finally {
|
|
100
|
+
stmt.free();
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
get(...params) {
|
|
104
|
+
const stmt = sqlDb.prepare(sql);
|
|
105
|
+
try {
|
|
106
|
+
stmt.bind(params);
|
|
107
|
+
return stmt.step() ? stmt.getAsObject() : undefined;
|
|
108
|
+
} finally {
|
|
109
|
+
stmt.free();
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
all(...params) {
|
|
113
|
+
const stmt = sqlDb.prepare(sql);
|
|
114
|
+
try {
|
|
115
|
+
stmt.bind(params);
|
|
116
|
+
const rows = [];
|
|
117
|
+
while (stmt.step()) rows.push(stmt.getAsObject());
|
|
118
|
+
return rows;
|
|
119
|
+
} finally {
|
|
120
|
+
stmt.free();
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
};
|
|
124
|
+
},
|
|
125
|
+
pragma() {
|
|
126
|
+
// sql.js doesn't support pragmas via prepare; quietly ignore.
|
|
127
|
+
},
|
|
128
|
+
exec(sql) {
|
|
129
|
+
sqlDb.exec(sql);
|
|
130
|
+
},
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/** Generate a project ID matching the desktop convention (UUID v4). */
|
|
135
|
+
export function newProjectId() {
|
|
136
|
+
// Node 14.17+ ships crypto.randomUUID; no extra dep needed.
|
|
137
|
+
const crypto = requireCjs("node:crypto");
|
|
138
|
+
return crypto.randomUUID();
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Open the desktop SQLite DB and return { db, close }.
|
|
143
|
+
*
|
|
144
|
+
* @param {string} [dbPath] Override DB path (default: desktop userData db)
|
|
145
|
+
* @returns {Promise<{ db, close }>}
|
|
146
|
+
*/
|
|
147
|
+
export async function openProjectsDb(dbPath = defaultProjectDbPath()) {
|
|
148
|
+
return _openDatabase(dbPath);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/** Valid project_type values (matches CHECK constraint in projects table). */
|
|
152
|
+
export const VALID_PROJECT_TYPES = [
|
|
153
|
+
"web",
|
|
154
|
+
"document",
|
|
155
|
+
"data",
|
|
156
|
+
"app",
|
|
157
|
+
"presentation",
|
|
158
|
+
"spreadsheet",
|
|
159
|
+
"design",
|
|
160
|
+
"code",
|
|
161
|
+
"workflow",
|
|
162
|
+
"knowledge",
|
|
163
|
+
];
|
|
164
|
+
|
|
165
|
+
/** Valid project statuses. */
|
|
166
|
+
export const VALID_PROJECT_STATUSES = [
|
|
167
|
+
"draft",
|
|
168
|
+
"active",
|
|
169
|
+
"completed",
|
|
170
|
+
"archived",
|
|
171
|
+
];
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{f as b,r as M,o as Xe,x as rt,K as d,L as c,M as g,c as e,N as t,u as a,R as l,O as i,P as s,Q as $,F as U,Y as xe,Z as W,S as j,w as ut,I as dt,H as pt,_ as yt}from"./vendor-Ci2pTZ_t.js";import{u as et,_ as tt,E as mt,a as ft,b as kt,T as _t,c as gt,d as V}from"./index-D8S-7oDQ.js";import{u as K}from"./useShellMode-CgR0wCYM.js";import{B as pe,R as ht,F as z,G as x,D as ee,M as me,h as te,i as fe,j as ae,A as ke,N as _e,k as ge,l as he,m as ve,n as we,S as Le,o as $e,p as be,q as oe,r as Oe,s as Ce,t as Se,u as Ee,v as Re,w as Ae,x as Ne,P as Te,y as ne,K as se,z as T,H as je,J as Be,O as Pe,W as De,Q as ie,U as Ue,V as Ke,X as le,Y as Me,Z as Ie,_ as Fe,$ as Ve,a0 as ze,a1 as qe,a2 as We,a3 as Ge,a4 as Ye,a5 as He,a6 as Je,a7 as vt,a8 as Qe,e as wt,a9 as Lt}from"./icons-B2G69bhT.js";import $t from"./index-ZOpqRGzA.js";import"./KeyCode-D63Tfrq7.js";import"./omit-Bf31gUOR.js";import"./pickAttrs-CTOOvnV9.js";import"./initDefaultProps-BSTz5E8D.js";import"./motion-B10pjDA-.js";import"./raf-Deuc0E8-.js";import"./index-D3tqZAdL.js";import"./index-_Oe8Zr99.js";import"./isVisible-C7tPsqfj.js";import"./useState-4T1Ntfpx.js";import"./devWarning-CNIS3FrJ.js";import"./warning-Pq00owYb.js";import"./compact-item-CQUZCSRU.js";import"./createContext-DgOciZHM.js";import"./Compact-VsImrjgV.js";import"./_getTag-BVc6NQ_K.js";import"./styleChecker-CoQ2DFN_.js";import"./zoom-Beg44Pk9.js";import"./ActionButton-BpVrefl1.js";import"./vnode-CAFNU-3N.js";const bt=""+new URL("logo-DBCYUiWP.png",import.meta.url).href,w={notifications:M([]),unreadCount:M(0)};function q(v){if(v&&v.ok===!1)throw new Error(v.error||"notification handler failed");return v?.result??v}function Ot(){const v=et();async function B({limit:p=50,offset:r=0,isRead:f}={}){if(!K().isEmbedded)return w.notifications.value=[],w.unreadCount.value=0,w.notifications.value;const y=await v.sendRaw({type:"notification.list",limit:p,offset:r,isRead:f},15e3),L=q(y);if(L?.success===!1)throw new Error(L.error||"notification.list failed");return w.notifications.value=Array.isArray(L?.notifications)?L.notifications:[],await O(),w.notifications.value}async function O(){if(!K().isEmbedded)return w.unreadCount.value=0,0;const p=await v.sendRaw({type:"notification.unread-count"},1e4),r=q(p);return w.unreadCount.value=Number(r?.count)||0,w.unreadCount.value}async function h(p){if(p==null||p==="")throw new Error("id is required");if(!K().isEmbedded)return;const r=await v.sendRaw({type:"notification.mark-read",id:p},1e4),f=q(r);if(f?.success===!1)throw new Error(f.error||"notification.mark-read failed");const y=w.notifications.value.find(L=>L.id===p);y&&(y.is_read=1),await O()}async function C(){if(!K().isEmbedded)return;const p=await v.sendRaw({type:"notification.mark-all-read"},1e4),r=q(p);if(r?.success===!1)throw new Error(r.error||"notification.mark-all-read failed");for(const f of w.notifications.value)f.is_read=1;w.unreadCount.value=0}async function R(p,r=""){if(!K().isEmbedded)throw new Error("桌面通知仅在嵌入式 web-shell 中可用");const f=await v.sendRaw({type:"notification.send-desktop",title:p,body:r},1e4),y=q(f);if(y?.success===!1)throw new Error(y.error||"notification.send-desktop failed")}return{notifications:b(()=>w.notifications.value),unreadCount:b(()=>w.unreadCount.value),refresh:B,refreshUnreadCount:O,markRead:h,markAllRead:C,sendDesktop:R}}const Ct={class:"notif-toolbar"},St={class:"notif-body"},Et={key:2,class:"notif-list"},Rt=["onClick"],At={class:"notif-row"},Nt={class:"notif-title"},Tt={class:"notif-time"},jt={key:0,class:"notif-message"},Bt={__name:"NotificationBell",setup(v){const B=M(!1),O=M("all"),h=M(!1),{notifications:C,unreadCount:R,refresh:p,markRead:r,markAllRead:f}=Ot();function y(){Y()}Xe(()=>{window.addEventListener("cc:open-notification-drawer",y)}),rt(()=>{window.removeEventListener("cc:open-notification-drawer",y)});const L=b(()=>O.value==="unread"?C.value.filter(m=>!m.is_read):C.value);async function G(){if(K().isEmbedded){h.value=!0;try{await p({limit:100})}catch{}finally{h.value=!1}}}async function Y(){B.value=!0,await G()}async function H(m){if(!m.is_read)try{await r(m.id)}catch{}}async function J(){try{await f()}catch(m){console.warn("[NotificationBell] markAllRead failed:",m?.message||m)}}function ce(m){if(!m)return"";const k=typeof m=="string"?Date.parse(m):Number(m);if(!Number.isFinite(k))return String(m);const S=Date.now()-k,P=6e4,A=60*P,I=24*A;return S<P?"刚刚":S<A?`${Math.floor(S/P)} 分钟前`:S<I?`${Math.floor(S/A)} 小时前`:new Date(k).toLocaleDateString()}return(m,k)=>{const S=d("a-badge"),P=d("a-tooltip"),A=d("a-radio-button"),I=d("a-radio-group"),F=d("a-space"),Q=d("a-button"),re=d("a-empty"),ue=d("a-spin"),de=d("a-drawer");return c(),g(U,null,[e(P,{title:"通知"},{default:t(()=>[e(S,{count:a(R),"overflow-count":99,offset:[-4,4]},{default:t(()=>[l("button",{type:"button",class:"notif-bell-btn","aria-label":"通知",onClick:Y},[e(a(pe))])]),_:1},8,["count"])]),_:1}),e(de,{open:B.value,"onUpdate:open":k[1]||(k[1]=_=>B.value=_),title:"通知中心",placement:"right",width:400,"body-style":{padding:0}},{default:t(()=>[l("div",Ct,[e(F,null,{default:t(()=>[e(I,{value:O.value,"onUpdate:value":k[0]||(k[0]=_=>O.value=_),size:"small","button-style":"solid"},{default:t(()=>[e(A,{value:"all"},{default:t(()=>[i("全部 ("+s(a(C).length)+")",1)]),_:1}),e(A,{value:"unread"},{default:t(()=>[i("未读 ("+s(a(R))+")",1)]),_:1})]),_:1},8,["value"])]),_:1}),e(F,null,{default:t(()=>[e(Q,{size:"small",loading:h.value,onClick:G},{icon:t(()=>[e(a(ht))]),_:1},8,["loading"]),e(Q,{size:"small",disabled:a(R)===0,onClick:J},{default:t(()=>[...k[2]||(k[2]=[i(" 全部已读 ",-1)])]),_:1},8,["disabled"])]),_:1})]),l("div",St,[!h.value&&L.value.length===0?(c(),$(re,{key:0,description:"暂无通知",image:a(mt).PRESENTED_IMAGE_SIMPLE,style:{padding:"60px 0"}},null,8,["image"])):h.value?(c(),$(ue,{key:1,style:{display:"block",padding:"60px"}})):(c(),g("ul",Et,[(c(!0),g(U,null,xe(L.value,_=>(c(),g("li",{key:_.id,class:W(["notif-item",{unread:!_.is_read}]),onClick:n=>H(_)},[l("div",At,[l("div",Nt,s(_.title||_.message||"(无标题)"),1),l("span",Tt,s(ce(_.created_at)),1)]),_.message&&_.title?(c(),g("div",jt,s(_.message),1)):j("",!0)],10,Rt))),128))]))])]),_:1},8,["open"])],64)}}},Pt=tt(Bt,[["__scopeId","data-v-af539070"]]),Dt=["src"],Ut={key:0,class:"logo-text"},Kt={key:0,class:"mode-banner project"},Mt={class:"banner-info"},It={class:"banner-name"},Ft={class:"banner-sub"},Vt={key:1,class:"mode-banner global"},zt={class:"banner-name"},qt=["title"],Wt={class:"group-label"},Gt={class:"group-label"},Yt={class:"group-label"},Ht={class:"group-label"},Jt={class:"group-label"},Qt={class:"group-label"},Zt={class:"group-label"},Xt={class:"group-label"},xt={class:"group-label"},ea={key:0,class:"footer-text"},ta={class:"header-left"},aa={class:"header-right"},oa={class:"theme-switcher"},na=["data-theme-key","onClick"],sa=["data-locale"],ia={class:"lang-switch-label"},la={class:"version-tag"},Ze="cc.web-panel.sidebar.openKeys",ca={__name:"AppLayout",setup(v){const B=dt(),O=pt(),h=et(),C=ft(),{t:R}=kt(),p=K(),r=M(!1),f=window.__CC_CONFIG__||{},y=b(()=>f.mode==="project"),L="v5.0.3.48",G=b(()=>C.current),Y=b(()=>C.config.vars["--menu-mode"]),H=b(()=>{const n=O.name?.toLowerCase()||"dashboard";return[{mcptools:"mcp",quickask:"quick-ask",ukeysign:"ukey-sign"}[n]||n]}),J=["g-overview","g-config","g-data","g-advanced","g-enterprise","g-social","g-media","g-extension"];function ce(){try{const n=localStorage.getItem(Ze);if(n){const u=JSON.parse(n);if(Array.isArray(u))return u.filter(o=>J.includes(o))}}catch{}return[...J]}const m=M(ce());ut(m,n=>{try{localStorage.setItem(Ze,JSON.stringify(n))}catch{}},{deep:!0});const k=b(()=>h.status),S=b(()=>({connected:"success",connecting:"processing",error:"error",disconnected:"default"})[h.status]||"default"),P=b(()=>{const n=`appLayout.footerStatus.${h.status}`,u=R(n);return u===n?R("appLayout.footerStatus.unknown"):u});function A(n){C.setTheme(n)}const{current:I,supported:F,setLocale:Q}=gt();function re(){const n=F[(F.indexOf(I.value)+1)%F.length];Q(n)}async function ue(n){try{const u=await h.sendRaw({type:"window.open",role:n},1e4);if(u?.ok===!1){V.error(`打开失败:${u.error||"未知"}`);return}const o=u?.result??u;o?.reason==="role_reserved"?V.warning("该窗口角色被保留"):o?.reason}catch(u){V.error(`打开桌面窗口失败:${u.message||u}`)}}async function de(){$t.confirm({title:"切换到桌面壳?",content:"回到 V5/V6 桌面壳。完整 electronAPI 表面(UKey 硬件 / 原生对话框 / 系统设置等)会重新可用,但失去 web-panel 的 SPA 体验。保存后需要重启应用才生效。",okText:"切换并重启",cancelText:"取消",centered:!0,async onOk(){try{const n=await h.sendRaw({type:"shell.switch",target:"desktop"},5e3);if(n?.ok===!1)throw new Error(n.error||"shell.switch returned failure");V.loading({content:"正在重启…",duration:0})}catch(n){const u=n instanceof Error?n.message:String(n);V.error("切换失败:"+u)}}})}function _({key:n}){if(typeof n=="string"&&n.startsWith("desktop:")){ue(n);return}B.push({mcp:"/mcp"}[n]||`/${n}`)}return Xe(()=>h.connect()),(n,u)=>{const o=d("a-menu-item"),E=d("a-sub-menu"),D=d("a-menu-divider"),at=d("a-menu"),ot=d("a-badge"),nt=d("a-layout-sider"),Z=d("a-tooltip"),st=d("a-tag"),it=d("a-layout-header"),lt=d("router-view"),ct=d("a-layout-content"),ye=d("a-layout");return c(),$(ye,{class:"app-root"},{default:t(()=>[e(nt,{collapsed:r.value,"onUpdate:collapsed":u[2]||(u[2]=N=>r.value=N),collapsible:"","collapsed-width":56,width:216,class:"sidebar"},{default:t(()=>[l("div",{class:W(["logo",{collapsed:r.value}])},[l("img",{src:a(bt),alt:"ChainlessChain",class:"logo-icon"},null,8,Dt),r.value?j("",!0):(c(),g("span",Ut,"ChainlessChain"))],2),r.value?(c(),g("div",{key:1,class:"mode-icon-sm",title:y.value?a(f).projectName:n.$t("appLayout.scope.global")},[y.value?(c(),$(a(z),{key:0,style:{color:"#1677ff"}})):(c(),$(a(x),{key:1,style:{color:"#722ed1"}}))],8,qt)):(c(),g(U,{key:0},[y.value?(c(),g("div",Kt,[e(a(z),{class:"banner-icon"}),l("div",Mt,[l("div",It,s(a(f).projectName||n.$t("appLayout.scope.fallbackProject")),1),l("div",Ft,s(n.$t("appLayout.scope.projectPanel")),1)])])):(c(),g("div",Vt,[e(a(x),{class:"banner-icon"}),l("span",zt,s(n.$t("appLayout.scope.global")),1)]))],64)),e(at,{selectedKeys:H.value,"onUpdate:selectedKeys":u[0]||(u[0]=N=>H.value=N),openKeys:m.value,"onUpdate:openKeys":u[1]||(u[1]=N=>m.value=N),theme:Y.value,mode:"inline","inline-collapsed":r.value,class:"side-menu",onClick:_},{default:t(()=>[r.value?(c(),g(U,{key:1},[e(o,{key:"dashboard"},{icon:t(()=>[e(a(ee))]),_:1}),e(o,{key:"chat"},{icon:t(()=>[e(a(me))]),_:1}),e(o,{key:"quick-ask"},{icon:t(()=>[e(a(te))]),_:1}),e(o,{key:"cowork"},{icon:t(()=>[e(a(fe))]),_:1}),e(o,{key:"services"},{icon:t(()=>[e(a(ae))]),_:1}),e(o,{key:"aiops"},{icon:t(()=>[e(a(ke))]),_:1}),e(o,{key:"tokens"},{icon:t(()=>[e(a(_e))]),_:1}),e(o,{key:"logs"},{icon:t(()=>[e(a(ge))]),_:1}),e(D,{class:"divider-sm"}),e(o,{key:"skills"},{icon:t(()=>[e(a(he))]),_:1}),e(o,{key:"providers"},{icon:t(()=>[e(a(ve))]),_:1}),e(o,{key:"mcp"},{icon:t(()=>[e(a(we))]),_:1}),e(o,{key:"project-settings"},{icon:t(()=>[e(a(z))]),_:1}),e(o,{key:"speech-settings"},{icon:t(()=>[e(a(Le))]),_:1}),e(o,{key:"notification-settings"},{icon:t(()=>[e(a(pe))]),_:1}),e(o,{key:"sync-settings"},{icon:t(()=>[e(a($e))]),_:1}),e(o,{key:"nlprog"},{icon:t(()=>[e(a(be))]),_:1}),e(o,{key:"codegen"},{icon:t(()=>[e(a(oe))]),_:1}),e(D,{class:"divider-sm"}),e(o,{key:"notes"},{icon:t(()=>[e(a(Oe))]),_:1}),e(o,{key:"search"},{icon:t(()=>[e(a(Ce))]),_:1}),e(o,{key:"memory"},{icon:t(()=>[e(a(Se))]),_:1}),e(o,{key:"knowledge"},{icon:t(()=>[e(a(Ee))]),_:1}),e(o,{key:"marketplace"},{icon:t(()=>[e(a(Re))]),_:1}),e(o,{key:"cron"},{icon:t(()=>[e(a(Ae))]),_:1}),e(o,{key:"workflow"},{icon:t(()=>[e(a(Ne))]),_:1}),e(o,{key:"pipeline"},{icon:t(()=>[e(a(Te))]),_:1}),e(o,{key:"tasks"},{icon:t(()=>[e(a(te))]),_:1}),e(D,{class:"divider-sm"}),e(o,{key:"security"},{icon:t(()=>[e(a(ne))]),_:1}),e(o,{key:"ukey-sign"},{icon:t(()=>[e(a(se))]),_:1}),e(o,{key:"trust"},{icon:t(()=>[e(a(T))]),_:1}),e(o,{key:"audit"},{icon:t(()=>[e(a(je))]),_:1}),e(o,{key:"mtc"},{icon:t(()=>[e(a(T))]),_:1}),e(o,{key:"mtc-audit"},{icon:t(()=>[e(a(T))]),_:1}),e(o,{key:"did"},{icon:t(()=>[e(a(Be))]),_:1}),e(o,{key:"permissions"},{icon:t(()=>[e(a(Pe))]),_:1}),e(o,{key:"p2p"},{icon:t(()=>[e(a(De))]),_:1}),e(o,{key:"backup"},{icon:t(()=>[e(a(ie))]),_:1}),e(o,{key:"git"},{icon:t(()=>[e(a(oe))]),_:1}),e(o,{key:"projects"},{icon:t(()=>[e(a(Ue))]),_:1}),e(o,{key:"crosschain"},{icon:t(()=>[e(a(Ke))]),_:1}),e(o,{key:"compliance"},{icon:t(()=>[e(a(T))]),_:1}),e(o,{key:"privacy"},{icon:t(()=>[e(a(le))]),_:1}),e(o,{key:"inference"},{icon:t(()=>[e(a(Me))]),_:1}),e(o,{key:"federation"},{icon:t(()=>[e(a(Ie))]),_:1}),e(D,{class:"divider-sm"}),e(o,{key:"wallet"},{icon:t(()=>[e(a(Fe))]),_:1}),e(o,{key:"organization"},{icon:t(()=>[e(a(Ve))]),_:1}),e(o,{key:"tenant"},{icon:t(()=>[e(a(ze))]),_:1}),e(o,{key:"sla"},{icon:t(()=>[e(a(ee))]),_:1}),e(o,{key:"analytics"},{icon:t(()=>[e(a(qe))]),_:1}),e(o,{key:"templates"},{icon:t(()=>[e(a(We))]),_:1}),e(D,{class:"divider-sm"}),e(o,{key:"community"},{icon:t(()=>[e(a(Ge))]),_:1}),e(o,{key:"governance"},{icon:t(()=>[e(a(Ye))]),_:1}),e(o,{key:"reputation"},{icon:t(()=>[e(a(He))]),_:1}),e(o,{key:"recommend"},{icon:t(()=>[e(a(Je))]),_:1}),e(D,{class:"divider-sm"}),e(o,{key:"rssfeed"},{icon:t(()=>[e(a(Qe))]),_:1}),e(o,{key:"webauthn"},{icon:t(()=>[e(a(se))]),_:1}),a(p).isEmbedded?(c(),g(U,{key:0},[e(D,{class:"divider-sm"}),e(o,{key:"desktop:hardware-wallet"},{icon:t(()=>[e(a(ne))]),_:1}),e(o,{key:"desktop:backup-dashboard"},{icon:t(()=>[e(a(ie))]),_:1}),e(o,{key:"desktop:llm-test-chat"},{icon:t(()=>[e(a(le))]),_:1}),e(o,{key:"desktop:settings"},{icon:t(()=>[e(a(ae))]),_:1})],64)):j("",!0)],64)):(c(),g(U,{key:0},[e(E,{key:"g-overview"},{title:t(()=>[l("span",Wt,s(n.$t("appLayout.groups.overview")),1)]),default:t(()=>[e(o,{key:"dashboard"},{icon:t(()=>[e(a(ee))]),default:t(()=>[i(s(n.$t("appLayout.items.dashboard")),1)]),_:1}),e(o,{key:"chat"},{icon:t(()=>[e(a(me))]),default:t(()=>[i(s(n.$t("appLayout.items.chat")),1)]),_:1}),e(o,{key:"quick-ask"},{icon:t(()=>[e(a(te))]),default:t(()=>[i(s(n.$t("appLayout.items.quickAsk")),1)]),_:1}),e(o,{key:"cowork"},{icon:t(()=>[e(a(fe))]),default:t(()=>[i(s(n.$t("appLayout.items.cowork")),1)]),_:1}),e(o,{key:"services"},{icon:t(()=>[e(a(ae))]),default:t(()=>[i(s(n.$t("appLayout.items.services")),1)]),_:1}),e(o,{key:"aiops"},{icon:t(()=>[e(a(ke))]),default:t(()=>[i(s(n.$t("appLayout.items.aiops")),1)]),_:1}),e(o,{key:"tokens"},{icon:t(()=>[e(a(_e))]),default:t(()=>[i(s(n.$t("appLayout.items.tokens")),1)]),_:1}),e(o,{key:"logs"},{icon:t(()=>[e(a(ge))]),default:t(()=>[i(s(n.$t("appLayout.items.logs")),1)]),_:1})]),_:1}),e(E,{key:"g-config"},{title:t(()=>[l("span",Gt,s(n.$t("appLayout.groups.config")),1)]),default:t(()=>[e(o,{key:"skills"},{icon:t(()=>[e(a(he))]),default:t(()=>[i(s(n.$t("appLayout.items.skills")),1)]),_:1}),e(o,{key:"providers"},{icon:t(()=>[e(a(ve))]),default:t(()=>[i(s(n.$t("appLayout.items.providers")),1)]),_:1}),e(o,{key:"mcp"},{icon:t(()=>[e(a(we))]),default:t(()=>[i(s(n.$t("appLayout.items.mcp")),1)]),_:1}),e(o,{key:"project-settings"},{icon:t(()=>[e(a(z))]),default:t(()=>[i(s(n.$t("appLayout.items.projectSettings")),1)]),_:1}),e(o,{key:"speech-settings"},{icon:t(()=>[e(a(Le))]),default:t(()=>[i(s(n.$t("appLayout.items.speechSettings")),1)]),_:1}),e(o,{key:"notification-settings"},{icon:t(()=>[e(a(pe))]),default:t(()=>[i(s(n.$t("appLayout.items.notificationSettings")),1)]),_:1}),e(o,{key:"sync-settings"},{icon:t(()=>[e(a($e))]),default:t(()=>[i(s(n.$t("appLayout.items.syncSettings")),1)]),_:1}),e(o,{key:"nlprog"},{icon:t(()=>[e(a(be))]),default:t(()=>[i(s(n.$t("appLayout.items.nlprog")),1)]),_:1}),e(o,{key:"codegen"},{icon:t(()=>[e(a(oe))]),default:t(()=>[i(s(n.$t("appLayout.items.codegen")),1)]),_:1})]),_:1}),e(E,{key:"g-data"},{title:t(()=>[l("span",Yt,s(n.$t("appLayout.groups.data")),1)]),default:t(()=>[e(o,{key:"notes"},{icon:t(()=>[e(a(Oe))]),default:t(()=>[i(s(n.$t("appLayout.items.notes")),1)]),_:1}),e(o,{key:"search"},{icon:t(()=>[e(a(Ce))]),default:t(()=>[i(s(n.$t("appLayout.items.search")),1)]),_:1}),e(o,{key:"memory"},{icon:t(()=>[e(a(Se))]),default:t(()=>[i(s(n.$t("appLayout.items.memory")),1)]),_:1}),e(o,{key:"knowledge"},{icon:t(()=>[e(a(Ee))]),default:t(()=>[i(s(n.$t("appLayout.items.knowledge")),1)]),_:1}),e(o,{key:"marketplace"},{icon:t(()=>[e(a(Re))]),default:t(()=>[i(s(n.$t("appLayout.items.marketplace")),1)]),_:1}),e(o,{key:"cron"},{icon:t(()=>[e(a(Ae))]),default:t(()=>[i(s(n.$t("appLayout.items.cron")),1)]),_:1}),e(o,{key:"workflow"},{icon:t(()=>[e(a(Ne))]),default:t(()=>[i(s(n.$t("appLayout.items.workflow")),1)]),_:1}),e(o,{key:"pipeline"},{icon:t(()=>[e(a(Te))]),default:t(()=>[i(s(n.$t("appLayout.items.pipeline")),1)]),_:1}),e(o,{key:"tasks"},{icon:t(()=>[e(a(te))]),default:t(()=>[i(s(n.$t("appLayout.items.tasks")),1)]),_:1})]),_:1}),e(E,{key:"g-advanced"},{title:t(()=>[l("span",Ht,s(n.$t("appLayout.groups.advanced")),1)]),default:t(()=>[e(o,{key:"security"},{icon:t(()=>[e(a(ne))]),default:t(()=>[i(s(n.$t("appLayout.items.security")),1)]),_:1}),e(o,{key:"ukey-sign"},{icon:t(()=>[e(a(se))]),default:t(()=>[i(s(n.$t("appLayout.items.ukeySign")),1)]),_:1}),e(o,{key:"trust"},{icon:t(()=>[e(a(T))]),default:t(()=>[i(s(n.$t("appLayout.items.trust")),1)]),_:1}),e(o,{key:"audit"},{icon:t(()=>[e(a(je))]),default:t(()=>[i(s(n.$t("appLayout.items.audit")),1)]),_:1}),e(o,{key:"mtc"},{icon:t(()=>[e(a(T))]),default:t(()=>[i(s(n.$t("appLayout.items.mtc")),1)]),_:1}),e(o,{key:"mtc-audit"},{icon:t(()=>[e(a(T))]),default:t(()=>[i(s(n.$t("appLayout.items.mtcAudit","MTC 审计")),1)]),_:1}),e(o,{key:"did"},{icon:t(()=>[e(a(Be))]),default:t(()=>[i(s(n.$t("appLayout.items.did")),1)]),_:1}),e(o,{key:"permissions"},{icon:t(()=>[e(a(Pe))]),default:t(()=>[i(s(n.$t("appLayout.items.permissions")),1)]),_:1}),e(o,{key:"p2p"},{icon:t(()=>[e(a(De))]),default:t(()=>[i(s(n.$t("appLayout.items.p2p")),1)]),_:1}),e(o,{key:"backup"},{icon:t(()=>[e(a(ie))]),default:t(()=>[i(s(n.$t("appLayout.items.backup")),1)]),_:1}),e(o,{key:"git"},{icon:t(()=>[e(a(oe))]),default:t(()=>[i(s(n.$t("appLayout.items.git")),1)]),_:1}),e(o,{key:"projects"},{icon:t(()=>[e(a(Ue))]),default:t(()=>[i(s(n.$t("appLayout.items.projects")),1)]),_:1}),e(o,{key:"crosschain"},{icon:t(()=>[e(a(Ke))]),default:t(()=>[i(s(n.$t("appLayout.items.crosschain")),1)]),_:1}),e(o,{key:"compliance"},{icon:t(()=>[e(a(T))]),default:t(()=>[i(s(n.$t("appLayout.items.compliance")),1)]),_:1}),e(o,{key:"privacy"},{icon:t(()=>[e(a(le))]),default:t(()=>[i(s(n.$t("appLayout.items.privacy")),1)]),_:1}),e(o,{key:"inference"},{icon:t(()=>[e(a(Me))]),default:t(()=>[i(s(n.$t("appLayout.items.inference")),1)]),_:1}),e(o,{key:"federation"},{icon:t(()=>[e(a(Ie))]),default:t(()=>[i(s(n.$t("appLayout.items.federation")),1)]),_:1})]),_:1}),e(E,{key:"g-enterprise"},{title:t(()=>[l("span",Jt,s(n.$t("appLayout.groups.enterprise")),1)]),default:t(()=>[e(o,{key:"wallet"},{icon:t(()=>[e(a(Fe))]),default:t(()=>[i(s(n.$t("appLayout.items.wallet")),1)]),_:1}),e(o,{key:"organization"},{icon:t(()=>[e(a(Ve))]),default:t(()=>[i(s(n.$t("appLayout.items.organization")),1)]),_:1}),e(o,{key:"tenant"},{icon:t(()=>[e(a(ze))]),default:t(()=>[i(s(n.$t("appLayout.items.tenant")),1)]),_:1}),e(o,{key:"sla"},{icon:t(()=>[e(a(ee))]),default:t(()=>[i(s(n.$t("appLayout.items.sla")),1)]),_:1}),e(o,{key:"analytics"},{icon:t(()=>[e(a(qe))]),default:t(()=>[i(s(n.$t("appLayout.items.analytics")),1)]),_:1}),e(o,{key:"templates"},{icon:t(()=>[e(a(We))]),default:t(()=>[i(s(n.$t("appLayout.items.templates")),1)]),_:1})]),_:1}),e(E,{key:"g-social"},{title:t(()=>[l("span",Qt,s(n.$t("appLayout.groups.social")),1)]),default:t(()=>[e(o,{key:"community"},{icon:t(()=>[e(a(Ge))]),default:t(()=>[i(s(n.$t("appLayout.items.community")),1)]),_:1}),e(o,{key:"governance"},{icon:t(()=>[e(a(Ye))]),default:t(()=>[i(s(n.$t("appLayout.items.governance")),1)]),_:1}),e(o,{key:"reputation"},{icon:t(()=>[e(a(He))]),default:t(()=>[i(s(n.$t("appLayout.items.reputation")),1)]),_:1}),e(o,{key:"recommend"},{icon:t(()=>[e(a(Je))]),default:t(()=>[i(s(n.$t("appLayout.items.recommend")),1)]),_:1})]),_:1}),e(E,{key:"g-media"},{title:t(()=>[l("span",Zt,s(n.$t("appLayout.groups.media")),1)]),default:t(()=>[e(o,{key:"video"},{icon:t(()=>[e(a(vt))]),default:t(()=>[i(s(n.$t("appLayout.items.video")),1)]),_:1})]),_:1}),e(E,{key:"g-extension"},{title:t(()=>[l("span",Xt,s(n.$t("appLayout.groups.extension")),1)]),default:t(()=>[e(o,{key:"rssfeed"},{icon:t(()=>[e(a(Qe))]),default:t(()=>[i(s(n.$t("appLayout.items.rssfeed")),1)]),_:1}),e(o,{key:"webauthn"},{icon:t(()=>[e(a(se))]),default:t(()=>[i(s(n.$t("appLayout.items.webauthn")),1)]),_:1})]),_:1}),a(p).isEmbedded?(c(),$(E,{key:"g-desktop"},{title:t(()=>[l("span",xt,s(n.$t("appLayout.groups.desktop")),1)]),default:t(()=>[e(o,{key:"desktop:hardware-wallet"},{icon:t(()=>[e(a(ne))]),default:t(()=>[i(s(n.$t("appLayout.items.desktopHardware")),1)]),_:1}),e(o,{key:"desktop:backup-dashboard"},{icon:t(()=>[e(a(ie))]),default:t(()=>[i(s(n.$t("appLayout.items.desktopBackup")),1)]),_:1}),e(o,{key:"desktop:llm-test-chat"},{icon:t(()=>[e(a(le))]),default:t(()=>[i(s(n.$t("appLayout.items.desktopLlmTest")),1)]),_:1}),e(o,{key:"desktop:settings"},{icon:t(()=>[e(a(ae))]),default:t(()=>[i(s(n.$t("appLayout.items.desktopSettings")),1)]),_:1})]),_:1})):j("",!0)],64))]),_:1},8,["selectedKeys","openKeys","theme","inline-collapsed"]),l("div",{class:W(["sidebar-footer",{collapsed:r.value}])},[e(ot,{status:S.value},null,8,["status"]),r.value?j("",!0):(c(),g("span",ea,s(P.value),1))],2)]),_:1},8,["collapsed"]),e(ye,{class:"main-area"},{default:t(()=>[e(it,{class:"app-header"},{default:t(()=>[l("div",ta,[l("div",{class:W(["scope-tag",y.value?"project":"global"])},[(c(),$(yt(y.value?a(z):a(x)))),l("span",null,s(y.value?a(f).projectName||n.$t("appLayout.scope.fallbackProject"):n.$t("appLayout.scope.global")),1),y.value&&a(f).projectRoot?(c(),$(Z,{key:0,title:a(f).projectRoot},{default:t(()=>[e(a(wt),{class:"info-icon"})]),_:1},8,["title"])):j("",!0)],2)]),l("div",aa,[l("div",oa,[(c(!0),g(U,null,xe(a(_t),(N,X)=>(c(),$(Z,{key:X,title:N.label},{default:t(()=>[l("button",{class:W(["theme-btn",{active:G.value===X}]),"data-theme-key":X,onClick:ra=>A(X)},s(N.icon),11,na)]),_:2},1032,["title"]))),128))]),e(Z,{title:n.$t("language.label")},{default:t(()=>[l("button",{class:"lang-switch-btn","data-locale":a(I),onClick:re},[e(a(x),{class:"lang-switch-icon"}),l("span",ia,s(n.$t("language.switch")),1)],8,sa)]),_:1},8,["title"]),a(p).isEmbedded?(c(),$(Pt,{key:0})):j("",!0),l("span",la,s(a(L)),1),a(p).isEmbedded?(c(),$(Z,{key:1,title:n.$t("appLayout.shellSwitch")},{default:t(()=>[l("button",{type:"button",class:"shell-switch-btn",onClick:de},[e(a(Lt))])]),_:1},8,["title"])):j("",!0),e(st,{color:k.value==="connected"?"green":k.value==="connecting"?"orange":"red",class:"ws-tag"},{default:t(()=>[i(s(k.value==="connected"?n.$t("appLayout.wsStatus.connected"):k.value==="connecting"?n.$t("appLayout.wsStatus.connecting"):n.$t("appLayout.wsStatus.disconnected")),1)]),_:1},8,["color"])])]),_:1}),e(ct,{class:"page-content"},{default:t(()=>[e(lt)]),_:1})]),_:1})]),_:1})}}},Pa=tt(ca,[["__scopeId","data-v-6636ff75"]]);export{Pa as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.notif-bell-btn[data-v-af539070]{width:32px;height:32px;border:none;background:transparent;border-radius:50%;cursor:pointer;color:var(--text-primary);display:inline-flex;align-items:center;justify-content:center;font-size:16px;transition:background .15s,transform .15s}.notif-bell-btn[data-v-af539070]:hover{background:var(--bg-card-hover);transform:scale(1.1)}.notif-toolbar[data-v-af539070]{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border-color);background:var(--bg-card)}.notif-body[data-v-af539070]{max-height:calc(100vh - 130px);overflow-y:auto}.notif-list[data-v-af539070]{list-style:none;margin:0;padding:0}.notif-item[data-v-af539070]{padding:12px 16px;border-bottom:1px solid var(--border-color);cursor:pointer;transition:background .15s}.notif-item[data-v-af539070]:hover{background:var(--bg-card-hover)}.notif-item.unread[data-v-af539070]{background:#1677ff14}.notif-row[data-v-af539070]{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.notif-title[data-v-af539070]{font-weight:500;color:var(--text-primary);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.notif-time[data-v-af539070]{flex-shrink:0;font-size:11px;color:var(--text-muted)}.notif-message[data-v-af539070]{margin-top:4px;font-size:12px;color:var(--text-secondary);line-height:1.5;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.app-root[data-v-6636ff75]{height:100vh;background:var(--bg-base);overflow:hidden}.sidebar[data-v-6636ff75]{background:var(--bg-sidebar)!important;border-right:1px solid var(--border-color);transition:background .25s;height:100vh}[data-v-6636ff75] .ant-layout-sider-children{display:flex;flex-direction:column;overflow:hidden;height:100%}.main-area[data-v-6636ff75]{background:var(--bg-base);height:100vh;display:flex;flex-direction:column}.logo[data-v-6636ff75]{height:52px;display:flex;align-items:center;padding:0 18px;gap:10px;border-bottom:1px solid var(--border-color);overflow:hidden;white-space:nowrap;flex-shrink:0}.logo.collapsed[data-v-6636ff75]{padding:0;justify-content:center}.logo-icon[data-v-6636ff75]{width:24px;height:24px;flex-shrink:0;object-fit:contain}.logo-text[data-v-6636ff75]{color:var(--logo-text);font-weight:700;font-size:14px;letter-spacing:.01em}.mode-banner[data-v-6636ff75]{display:flex;align-items:center;gap:8px;padding:7px 10px;margin:8px 8px 4px;border-radius:7px;overflow:hidden}.mode-banner.project[data-v-6636ff75]{background:#1677ff1a;border:1px solid rgba(22,119,255,.2)}.mode-banner.global[data-v-6636ff75]{background:#722ed11a;border:1px solid rgba(114,46,209,.2)}.banner-icon[data-v-6636ff75]{font-size:13px;flex-shrink:0;color:#1677ff}.mode-banner.global .banner-icon[data-v-6636ff75]{color:#722ed1}.banner-info[data-v-6636ff75]{flex:1;min-width:0}.banner-name[data-v-6636ff75]{font-size:12px;font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.banner-sub[data-v-6636ff75]{font-size:10px;color:#1677ff;margin-top:1px}.mode-banner.global .banner-name[data-v-6636ff75]{color:#c084fc}.mode-icon-sm[data-v-6636ff75]{display:flex;justify-content:center;padding:8px 0;font-size:14px}.side-menu[data-v-6636ff75]{border:none!important;margin-top:2px;-webkit-user-select:none;user-select:none;background:transparent!important;flex:1;overflow-y:auto;overflow-x:hidden}.group-label[data-v-6636ff75]{color:var(--group-title);font-size:10px;font-weight:700;letter-spacing:.12em;padding-left:6px}[data-v-6636ff75] .ant-menu-item-group-title{padding:8px 16px 2px!important}[data-v-6636ff75] .ant-menu-item{height:38px!important;line-height:38px!important;margin:1px 4px!important;border-radius:6px!important}.divider-sm[data-v-6636ff75]{margin:4px 0!important}.sidebar-footer[data-v-6636ff75]{flex-shrink:0;padding:8px 18px;display:flex;align-items:center;gap:8px;border-top:1px solid var(--border-color)}.sidebar-footer.collapsed[data-v-6636ff75]{justify-content:center;padding:8px 0}.footer-text[data-v-6636ff75]{color:var(--text-secondary);font-size:11px}.app-header[data-v-6636ff75]{background:var(--bg-header)!important;padding:0 20px!important;border-bottom:1px solid var(--border-color);height:50px!important;line-height:50px!important;display:flex!important;align-items:center!important;justify-content:space-between!important;box-shadow:0 1px 4px #0000000f}.header-left[data-v-6636ff75],.header-right[data-v-6636ff75]{display:flex;align-items:center;gap:10px}.scope-tag[data-v-6636ff75]{display:flex;align-items:center;gap:5px;padding:3px 10px;border-radius:5px;font-size:12px;font-weight:500}.scope-tag.project[data-v-6636ff75]{background:#1677ff1a;color:#1677ff;border:1px solid rgba(22,119,255,.2)}.scope-tag.global[data-v-6636ff75]{background:#722ed11a;color:#722ed1;border:1px solid rgba(114,46,209,.2)}.info-icon[data-v-6636ff75]{opacity:.45;cursor:help;margin-left:2px}.theme-switcher[data-v-6636ff75]{display:flex;align-items:center;gap:4px;background:var(--bg-card);border:1px solid var(--border-color);border-radius:20px;padding:3px 6px}.theme-btn[data-v-6636ff75]{width:26px;height:26px;border:none;border-radius:50%;cursor:pointer;background:transparent;font-size:14px;line-height:1;display:flex;align-items:center;justify-content:center;transition:background .15s,transform .15s;opacity:.55}.theme-btn[data-v-6636ff75]:hover{opacity:.9;transform:scale(1.15);background:var(--bg-card-hover)}.theme-btn.active[data-v-6636ff75]{opacity:1;transform:scale(1.1);background:var(--bg-card-hover);outline:2px solid var(--text-secondary)}.version-tag[data-v-6636ff75]{color:var(--text-muted);font-size:11px}.ws-tag[data-v-6636ff75]{margin:0!important;font-size:11px}.lang-switch-btn[data-v-6636ff75]{display:inline-flex;align-items:center;gap:5px;height:28px;padding:0 12px;border:1px solid var(--border-color);border-radius:14px;background:var(--bg-card);color:var(--text-primary);font-size:12px;font-weight:500;cursor:pointer;transition:background .15s,color .15s,border-color .15s,transform .15s}.lang-switch-btn[data-v-6636ff75]:hover{background:var(--bg-card-hover);color:#1677ff;border-color:#1677ff;transform:scale(1.04)}.lang-switch-icon[data-v-6636ff75]{font-size:14px}.lang-switch-label[data-v-6636ff75]{line-height:1}.shell-switch-btn[data-v-6636ff75]{width:26px;height:26px;border:none;border-radius:50%;cursor:pointer;background:transparent;font-size:14px;line-height:1;display:flex;align-items:center;justify-content:center;color:var(--text-secondary);transition:background .15s,transform .15s,color .15s;opacity:.6}.shell-switch-btn[data-v-6636ff75]:hover{opacity:1;transform:scale(1.15);background:var(--bg-card-hover);color:var(--text-primary)}.page-content[data-v-6636ff75]{padding:24px;overflow:auto;background:var(--bg-base);flex:1;min-height:0}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.template-card[data-v-55e98756]{transition:border-color .2s,box-shadow .2s}.template-card[data-v-55e98756]:hover{border-color:#1677ff!important}.template-selected[data-v-55e98756]{border-color:#1677ff!important;box-shadow:0 0 0 2px #1677ff26}
|