chainlesschain 0.166.42 → 0.166.43
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 +1 -1
- package/src/assets/web-panel/.build-hash +1 -1
- package/src/assets/web-panel/assets/{AIOps-CdsAAOAu.js → AIOps-BIl-Z62M.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-B8x5S-3u.js → ActionButton-BgPi_Te6.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-C1eOGwSM.js → Analytics-CaNIzlAG.js} +3 -3
- package/src/assets/web-panel/assets/AppLayout-D9GSx2hl.js +9 -0
- package/src/assets/web-panel/assets/{Artifacts-B0tiKn2i.js → Artifacts-Kq7kotzv.js} +1 -1
- package/src/assets/web-panel/assets/{Audit-DzGqTUvG.js → Audit-e1RTJLco.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-CMXYcy56.js → BackgroundAgents-BfyNT0BW.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-DrN3N1_7.js → Backup-BEAq7i6S.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-BC9aoifZ.js → BaseInput-BHuP82DF.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-F3Z9p0vk.js → Chat-BLPgCQsB.js} +6 -6
- package/src/assets/web-panel/assets/ChatBubbleRenderer-DWXPJh-J.js +1 -0
- package/src/assets/web-panel/assets/{Checkbox-CDXlouzl.js → Checkbox-DDJrOqEh.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-9c0RpaYc.js → Codegen-CxyKcM6S.js} +1 -1
- package/src/assets/web-panel/assets/{Col-C-60iGia.js → Col-BYFh9rE1.js} +1 -1
- package/src/assets/web-panel/assets/{Community-DXE04H2M.js → Community-D8JPppoh.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-B4jEuBmH.js → Compact-B5VGSqZe.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-uf13-dcK.js → Compliance-C7KiFcUK.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-D6hpxLI4.js → Cowork-D-F2fgA_.js} +3 -3
- package/src/assets/web-panel/assets/{Cron-CSJobmkN.js → Cron-B6TmPqRO.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-B0_rTlsi.js → Crosschain-BeGcBXhk.js} +1 -1
- package/src/assets/web-panel/assets/{DID-D49FQsiZ.js → DID-9QklLcmQ.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-BvjvIYfC.js → Dashboard-DIadmsuS.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-BYe1gODU.js → Dropdown-0I5gks3i.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-CJ6znfiH.js → EmailListRenderer-BdTAjT2q.js} +1 -1
- package/src/assets/web-panel/assets/EvolutionSettings-Bdw8ApoT.css +1 -0
- package/src/assets/web-panel/assets/EvolutionSettings-C7_tq643.js +1 -0
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-BnoKDllh.js → FamilyGuardDashboard-DQUQWwUY.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-AqhVFmd4.js → Federation-Drgi--Zn.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-CNVYBpNg.js → FormItemContext-BOf-9P8n.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-BbdYCfjH.js → GenericCardRenderer-CBBnIDaW.js} +1 -1
- package/src/assets/web-panel/assets/{Git-B_xClOR0.js → Git-BKimGd5P.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-CIKCDF9F.js → Governance-DoXCXppu.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-BdRSc0oa.js → Inference-DzOhGhOE.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-DknpIQPx.js → KnowledgeGraph-DawgmU58.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-BcCPhMaZ.js → Logs-Co3EJL2Y.js} +2 -2
- package/src/assets/web-panel/assets/MarkdownRenderer-VUfiDRZN.js +1 -0
- package/src/assets/web-panel/assets/{Marketplace-DEMNuvwO.js → Marketplace-BqpMHnMW.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-D-tg9wfq.js → McpTools-C7ZSokcR.js} +2 -2
- package/src/assets/web-panel/assets/{Memory-BqCLu-X9.js → Memory-DuJrpeDx.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-bN6vwbZc.js → MobileBridge-CaM744NU.js} +1 -1
- package/src/assets/web-panel/assets/MobileProjects-Bd78jDwm.js +1 -0
- package/src/assets/web-panel/assets/{Mtc-CcGXXyEn.js → Mtc-5oUB7lPh.js} +2 -2
- package/src/assets/web-panel/assets/{MtcAudit-B2Z5wPnM.js → MtcAudit-D9DNF6DB.js} +2 -2
- package/src/assets/web-panel/assets/{Multisig-DNW7dKam.js → Multisig-CfMpFQSr.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-Ciz-g5G3.js → NLProgramming-CuhPZQ7q.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-CeiEA6yF.js → Notes-NtSeMoyM.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-DgeiEPwB.js → NotificationSettings-CB4e7V83.js} +1 -1
- package/src/assets/web-panel/assets/{OrderTableRenderer-D9DjubGK.js → OrderTableRenderer-Bu8C6Qlj.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-CeA2EC_G.js → Organization-K_0bjm7y.js} +2 -2
- package/src/assets/web-panel/assets/{Overflow-DT40ig7t.js → Overflow-D2vwxiPv.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-K4H13K3M.js → P2P-WQMHBu8q.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-CF7TzZmx.js → PdhVaultBrowser-CTZVBMZZ.js} +3 -3
- package/src/assets/web-panel/assets/{Permissions-DYQogL6r.js → Permissions-DcLy9Nfp.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-DXhXVHar.js → PersonalDataHub-zc-cm-02.js} +4 -4
- package/src/assets/web-panel/assets/{Pipeline-DQMdn5Ij.js → Pipeline-CCnI8peM.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-BiF1thop.js → Privacy-DO1Xor8L.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-C2ptWEn7.js → ProjectInit-CZqC-jyt.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-B5WCiDZD.js → ProjectSettings-DqJtyavX.js} +2 -2
- package/src/assets/web-panel/assets/{Projects-BNH6LKU6.js → Projects-Dx14NAO3.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-CgRJ8ZT1.js → Providers-DH13a6ro.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-B3tuNJ3V.js → QrScannerModal-C9bwzVfA.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-D9CO1SNI.js → QuickAsk-Cbt-oIPf.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-BGmwHY_U.js → Recommend-BYIimGcY.js} +1 -1
- package/src/assets/web-panel/assets/{RemoteSession-CliYaolm.js → RemoteSession-C8OWTG1H.js} +2 -2
- package/src/assets/web-panel/assets/{Reputation-sCiX2kmm.js → Reputation-DpUGT_jD.js} +1 -1
- package/src/assets/web-panel/assets/{Row-DXHx_bk0.js → Row-DZ5Izi2A.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-Bg79mIxI.js → RssFeed-CAn94No1.js} +3 -3
- package/src/assets/web-panel/assets/{Search-CnKDYqyS.js → Search-BqNaxcgj.js} +1 -1
- package/src/assets/web-panel/assets/{Security-c-0QOrC2.js → Security-Ck6vFTWn.js} +4 -4
- package/src/assets/web-panel/assets/{Services-BBBTb4YA.js → Services-Y3RdvvDj.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-CtL_5fJe.js → Skeleton-Cx9Iqcp7.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-DvqrC2_v.js → Skills-Oiqz7wLM.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-C5LGNImz.js → Sla-DaKJQADm.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-Btx0KgwX.js → SpeechSettings-BWoOpPW4.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-DFLNSWuu.js → SyncSettings-CgFle8GX.js} +2 -2
- package/src/assets/web-panel/assets/Tasks-C1tQNvWx.js +1 -0
- package/src/assets/web-panel/assets/{Templates-CIIt_k5J.js → Templates-CvvycaWi.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-Nqo1PA2a.js → Tenant-D1FwaD12.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-CGwV9hW9.js → Terminal-oorFjObO.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-Bu3xrXyf.js → TimelineRenderer-BjMs48Sj.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-3bC3zrYj.js → Tokens-BkRb95xG.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-DG84V7Xf.js → Trigger-B94RYYAF.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-rPhNXoYJ.js → Trust-DnBVpOWt.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-CamNxeAp.js → UkeySign-DouHO6Up.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-CkIuH4Gm.js → VideoEditing-DDgRerWV.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-SD5W5uHT.js → Wallet-CQN9Un7X.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn--A4Sddxn.js → WebAuthn-DyHl2G3J.js} +4 -4
- package/src/assets/web-panel/assets/{WorkflowEditor-Ca7qvch8.js → WorkflowEditor-BQlN77Ey.js} +1 -1
- package/src/assets/web-panel/assets/{chat-i8OBdjCB.js → chat-0jOqe7ZD.js} +1 -1
- package/src/assets/web-panel/assets/{colors-BeYbJKQ8.js → colors-kp5TAaKx.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-BqpF-Sya.js → compact-item-DqF6Rml7.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-qXTb29t3.js → createContext-lDyLBjy5.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-IfrMTwCK.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-DOfL0KSW.js → hasIn-CkiF91kH.js} +1 -1
- package/src/assets/web-panel/assets/{index-rdW8KX_7.js → index-8Hxbv1SG.js} +1 -1
- package/src/assets/web-panel/assets/{index-B177TAO-.js → index-B6V9l2P-.js} +1 -1
- package/src/assets/web-panel/assets/{index-D8c3Ctj4.js → index-BAtpuJQ7.js} +1 -1
- package/src/assets/web-panel/assets/{index-0OxY_Nsh.js → index-BKFL4DfP.js} +1 -1
- package/src/assets/web-panel/assets/{index--TQi5102.js → index-BPcjLn2w.js} +1 -1
- package/src/assets/web-panel/assets/{index-BYzQaGnV.js → index-BPwtIqRo.js} +1 -1
- package/src/assets/web-panel/assets/{index-CLrDyxeZ.js → index-BRu6Pe98.js} +1 -1
- package/src/assets/web-panel/assets/{index-Byn_IHXR.js → index-BSAeSPQe.js} +1 -1
- package/src/assets/web-panel/assets/{index-ByHZkqj5.js → index-BUqE17wu.js} +1 -1
- package/src/assets/web-panel/assets/{index-BOwR6mHU.js → index-BnU8hi3c.js} +1 -1
- package/src/assets/web-panel/assets/{index-DCcXU9HN.js → index-Bq2s5obn.js} +5 -5
- package/src/assets/web-panel/assets/{index-czHvbhS0.js → index-Bu14YcwM.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dio2mTWq.js → index-BvFFY-2V.js} +1 -1
- package/src/assets/web-panel/assets/{index-BdbrE-hz.js → index-ByggSxTQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-CebShwk1.js → index-C-CS_-jC.js} +1 -1
- package/src/assets/web-panel/assets/index-C7nsIbMa.js +1 -0
- package/src/assets/web-panel/assets/{index-X8TXf9Bb.js → index-CI-H0ljO.js} +1 -1
- package/src/assets/web-panel/assets/{index-BmzmjSGb.js → index-CLchRTsS.js} +1 -1
- package/src/assets/web-panel/assets/{index-nl9IxLfv.js → index-CNPCAYHk.js} +1 -1
- package/src/assets/web-panel/assets/index-DFXFLdKN.js +1 -0
- package/src/assets/web-panel/assets/{index-DWLxMPZ_.js → index-DHVNtkrR.js} +1 -1
- package/src/assets/web-panel/assets/{index-C4_8KnUt.js → index-DHnFhMOL.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cy8WApMp.js → index-DK47iA2d.js} +1 -1
- package/src/assets/web-panel/assets/{index-C13IM9lj.js → index-DPHmcQWh.js} +1 -1
- package/src/assets/web-panel/assets/{index-BuzGZOAK.js → index-DQGk8bV8.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cvig0IjN.js → index-DSDM-VNz.js} +1 -1
- package/src/assets/web-panel/assets/{index-CXXeOim8.js → index-DTA_B9gU.js} +1 -1
- package/src/assets/web-panel/assets/{index-BD386d6M.js → index-DX40v3aL.js} +1 -1
- package/src/assets/web-panel/assets/{index-B00rNoIx.js → index-DZU13W4o.js} +1 -1
- package/src/assets/web-panel/assets/{index-C-P0NHi4.js → index-DduPk1RS.js} +1 -1
- package/src/assets/web-panel/assets/{index-TAvlGp5l.js → index-DgGNW2ep.js} +1 -1
- package/src/assets/web-panel/assets/{index-CH7mHJoh.js → index-DnI__Fwu.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bt7Ua7EC.js → index-DrVVi5jX.js} +1 -1
- package/src/assets/web-panel/assets/{index-vNYrAXO6.js → index-DzU_SfdF.js} +1 -1
- package/src/assets/web-panel/assets/{index-GGEsF-NA.js → index-INxX1TMz.js} +1 -1
- package/src/assets/web-panel/assets/{index-JxyF4KNw.js → index-X1l5-ive.js} +1 -1
- package/src/assets/web-panel/assets/{index-BKd03Rn4.js → index-aHKeys8c.js} +1 -1
- package/src/assets/web-panel/assets/{index-zmvw3Ptl.js → index-kenTha3h.js} +1 -1
- package/src/assets/web-panel/assets/{index-DIikgsI1.js → index-mkwJZMBT.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-BKpYiODg.js → initDefaultProps-CYYQ0SI1.js} +1 -1
- package/src/assets/web-panel/assets/{motion-DJ2p-V-R.js → motion--Tyo36te.js} +1 -1
- package/src/assets/web-panel/assets/{move-CmA2ejm5.js → move-D2BjgQv7.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-CAIGxQzN.js → mtc-parser-dyIu5RU_.js} +1 -1
- package/src/assets/web-panel/assets/{omit-DJlnhA7K.js → omit-CDEAhC5H.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-CZPrJyhF.js → pickAttrs-DLKDlIQs.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-CXy74okE.js → placementArrow-BveC8fe2.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-DexkLtci.js → responsiveObserve-51urgYrW.js} +1 -1
- package/src/assets/web-panel/assets/{slide-BzjBJbPV.js → slide-CCHbhZg-.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-gnHIXw2X.js → statusUtils-W4mtUXRP.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-DHBjT1Gk.js → styleChecker-D4Drrz2a.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-BmMStW87.js → useFlexGapSupport-BBCd4kCM.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-BcV5VGA2.js → useFs-4Khxvw5Y.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-DBxxRRY2.js → usePersonalDataHub-7c72tleZ.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-Bt5yp9hj.js → vnode-DzZ7Y0LN.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-CMdUkOfw.js → zoom-C5jhaET3.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/command-help-index.json +1 -1
- package/src/commands/evolution-deployment.js +95 -0
- package/src/commands/evolution.js +2 -0
- package/src/data/changelog.json +13 -0
- package/src/gateways/ws/evolution-deployment-topic-handlers.js +53 -0
- package/src/lib/evolution/evolution-deployment-config.js +81 -0
- package/src/lib/evolution/evolution-deployment-loader.js +62 -13
- package/src/lib/evolution/evolution-deployment-profile.js +114 -0
- package/src/lib/public-ide-capability-manifest.js +2 -0
- package/src/lib/read-file-loop-guard.js +17 -4
- package/src/lib/remote-read-loop-guard.js +13 -0
- package/src/lib/task-progress-tracker.js +36 -1
- package/src/lib/text-file-search.js +11 -0
- package/src/runtime/agent-core.js +5 -1
- package/src/runtime/agent-runtime.js +2 -0
- package/src/assets/web-panel/assets/AppLayout-CdnpAzuo.js +0 -9
- package/src/assets/web-panel/assets/ChatBubbleRenderer-LMGrVg9Z.js +0 -1
- package/src/assets/web-panel/assets/MarkdownRenderer-H_GkKEp-.js +0 -1
- package/src/assets/web-panel/assets/MobileProjects-BTM0-1MZ.js +0 -1
- package/src/assets/web-panel/assets/Tasks-Btkyo0G7.js +0 -1
- package/src/assets/web-panel/assets/devWarning-DATyiD_X.js +0 -1
- package/src/assets/web-panel/assets/index-DmzMCELP.js +0 -1
- package/src/assets/web-panel/assets/index-TlPg2Jz6.js +0 -1
|
@@ -54,6 +54,17 @@ export function searchTextFile(file, options = {}) {
|
|
|
54
54
|
const finish = (result) => {
|
|
55
55
|
if (settled) return;
|
|
56
56
|
settled = true;
|
|
57
|
+
if (
|
|
58
|
+
!result.error &&
|
|
59
|
+
!regex &&
|
|
60
|
+
result.matches?.length === 0 &&
|
|
61
|
+
/[|^$]|\\[bdsw]|\.\*/i.test(pattern)
|
|
62
|
+
) {
|
|
63
|
+
result = {
|
|
64
|
+
...result,
|
|
65
|
+
hint: "No literal matches. This pattern contains regex syntax, but this search used literal matching. If alternation or regex was intended, set regex: true; otherwise search one exact symbol. Do not infer that the symbols are absent from this result.",
|
|
66
|
+
};
|
|
67
|
+
}
|
|
57
68
|
clearTimeout(timer);
|
|
58
69
|
Promise.resolve(worker?.terminate())
|
|
59
70
|
.catch(() => {})
|
|
@@ -1104,6 +1104,8 @@ Key behaviors:
|
|
|
1104
1104
|
- When asked to create something, use write_file to create it
|
|
1105
1105
|
- When asked to remove or rename a file, use delete_file or move_file so the filesystem intent is explicit and reviewable
|
|
1106
1106
|
- When asked to run/test something, use run_shell to execute it
|
|
1107
|
+
- For a bug fix, retain the failing test/file and exact error, inspect the relevant code, then state a root-cause hypothesis and run the smallest reproduction or diagnostic that can disprove it. Base the next step on actual output. Do not repeatedly read adjacent files without identifying a specific missing fact. Validate the fix with the failing case and report what remains unverified.
|
|
1108
|
+
- For CI log retrieval, inspect command stderr before retrying. Match syntax to the actual shell: Windows PowerShell 5 does not support &&, cmd treats single quotes literally, and head is not a Windows builtin. Prefer a plain gh metadata/log command without jq or pipelines first, then inspect the saved output. Never switch shells to bypass a policy denial.
|
|
1107
1109
|
- For long-running commands (builds, full test suites, dev servers) set run_shell { run_in_background: true } to get a task_id back immediately, then poll output and completion with check_shell { task_id }. Kill a backgrounded server with check_shell { task_id, kill: true } when finished
|
|
1108
1110
|
- When asked about git status, diff, log, or other repository operations, use the git tool instead of run_shell
|
|
1109
1111
|
- When asked about files or code, use search_files to locate relevant sections, then read_file with offset/limit. Follow nextRead for large files. Reuse unchanged content already in context instead of repeatedly reading the same page; re-read when the file changes or the earlier content is no longer available.
|
|
@@ -14564,7 +14566,7 @@ export async function* agentLoop(messages, options) {
|
|
|
14564
14566
|
prActionTask &&
|
|
14565
14567
|
taskProgressTracker.explorationCalls >= PR_INVESTIGATION_LIMIT;
|
|
14566
14568
|
const taskRecoveryTools = TASK_RECOVERY_TOOLS.filter(
|
|
14567
|
-
(tool) => tool !== "read_file" || !readFileLoopGuard.
|
|
14569
|
+
(tool) => tool !== "read_file" || !readFileLoopGuard.hasRecoveryReads,
|
|
14568
14570
|
);
|
|
14569
14571
|
if (newProgressIntervention) {
|
|
14570
14572
|
lastTaskProgressIntervention = progressIntervention.key;
|
|
@@ -15205,6 +15207,7 @@ export async function* agentLoop(messages, options) {
|
|
|
15205
15207
|
// session (concurrent prompts would race), or `parallelReadOnlyTools: false`
|
|
15206
15208
|
// falls through to the strictly sequential loop below.
|
|
15207
15209
|
const parallelReads =
|
|
15210
|
+
!remoteReadLoopGuard.recoveryHint &&
|
|
15208
15211
|
options.parallelReadOnlyTools !== false &&
|
|
15209
15212
|
!taskRecoveryTurn &&
|
|
15210
15213
|
toolCalls.length > 1 &&
|
|
@@ -15440,6 +15443,7 @@ export async function* agentLoop(messages, options) {
|
|
|
15440
15443
|
// preflight runs again inside executeTool to prevent call-site drift.
|
|
15441
15444
|
const earlyAuthorityDenial =
|
|
15442
15445
|
(pausedTools.has(toolName) ||
|
|
15446
|
+
remoteReadLoopGuard.shouldPause(toolName, toolArgs) ||
|
|
15443
15447
|
(taskRecoveryTurn &&
|
|
15444
15448
|
toolName === "read_file" &&
|
|
15445
15449
|
!(
|
|
@@ -17,6 +17,7 @@ import { ChainlessChainWSServer } from "../gateways/ws/ws-server.js";
|
|
|
17
17
|
import { WSSessionManager } from "../gateways/ws/ws-session-gateway.js";
|
|
18
18
|
import { attachTopicHandlers } from "../gateways/ws/topic-handler-attachment.js";
|
|
19
19
|
import { createMcpTopicHandlers } from "../gateways/ws/mcp-topic-handlers.js";
|
|
20
|
+
import { createEvolutionDeploymentTopicHandlers } from "../gateways/ws/evolution-deployment-topic-handlers.js";
|
|
20
21
|
import { PtyManager } from "../gateways/terminal/PtyManager.js";
|
|
21
22
|
import { createTerminalHandlers } from "../gateways/terminal/terminal-handlers.js";
|
|
22
23
|
import { createWebUIServer } from "../gateways/ui/web-ui-server.js";
|
|
@@ -807,6 +808,7 @@ export class AgentRuntime {
|
|
|
807
808
|
configStore: mcpConfigStore,
|
|
808
809
|
cwd: workspacePolicyCwd,
|
|
809
810
|
}),
|
|
811
|
+
...createEvolutionDeploymentTopicHandlers(),
|
|
810
812
|
},
|
|
811
813
|
});
|
|
812
814
|
wsBroadcastRef.current = attached.broadcast;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import{b as v,r as D,I as k,P as p,J as L,c as e,K as t,U as d,Q as l,R as a,S as B,F,Z as se,_ as W,V as m,o as z,x as $,$ as fe,N as J,f as ee,M as te,w as ne,a0 as me}from"./vendor-Bn1JzzAn.js";import{u as H,_ as Z,E as ke,a as oe,b as ie,c as ae,T as ge,d as V}from"./index-DCcXU9HN.js";import{u as N}from"./useShellMode-CgR0wCYM.js";import{R as _e,B as de,M as ue,F as Oe,U as he,D as be,S as we,h as ve,i as Le,j as Se,N as Ce,k as Ee,l as Te,m as Ae,n as Be,A as Me,P as Re,o as De,p as Pe,q as je,r as Ue,s as Ne,t as Fe,u as Ie,v as Ke,w as Ve,x as We,y as ze,V as Ge,K as He,z as qe,G as Je,H as Ye,J as Ze,O as Qe,W as Xe,Q as xe,X as $e,Y as et,Z as tt,_ as nt,$ as ot,a0 as it,a1 as at,a2 as lt,a3 as rt,a4 as st,a5 as dt,a6 as ut,e as ct,a7 as yt,a8 as pt,a9 as ft,aa as mt,ab as kt,ac as gt,ad as _t}from"./icons-DG5UD-6K.js";import le from"./index-B177TAO-.js";import"./KeyCode-D63Tfrq7.js";import"./omit-DJlnhA7K.js";import"./pickAttrs-CZPrJyhF.js";import"./initDefaultProps-BKpYiODg.js";import"./motion-DJ2p-V-R.js";import"./raf-Deuc0E8-.js";import"./index-BYzQaGnV.js";import"./index-BOwR6mHU.js";import"./isVisible-C7tPsqfj.js";import"./useState-CnxtbLoC.js";import"./devWarning-DATyiD_X.js";import"./compact-item-BqpF-Sya.js";import"./createContext-qXTb29t3.js";import"./Compact-B4jEuBmH.js";import"./_getTag-DnrRH4E6.js";import"./styleChecker-DHBjT1Gk.js";import"./zoom-CMdUkOfw.js";import"./ActionButton-B8x5S-3u.js";import"./vnode-Bt5yp9hj.js";const Ot=""+new URL("logo-DBCYUiWP.png",import.meta.url).href,T={notifications:D([]),unreadCount:D(0)};function G(i){if(i&&i.ok===!1)throw new Error(i.error||"notification handler failed");return i?.result??i}function re(){const i=H();async function u({limit:o=50,offset:s=0,isRead:f}={}){if(!N().isEmbedded)return T.notifications.value=[],T.unreadCount.value=0,T.notifications.value;const _=await i.sendRaw({type:"notification.list",limit:o,offset:s,isRead:f},15e3),O=G(_);if(O?.success===!1)throw new Error(O.error||"notification.list failed");return T.notifications.value=Array.isArray(O?.notifications)?O.notifications:[],await S(),T.notifications.value}async function S(){if(!N().isEmbedded)return T.unreadCount.value=0,0;const o=await i.sendRaw({type:"notification.unread-count"},1e4),s=G(o);return T.unreadCount.value=Number(s?.count)||0,T.unreadCount.value}async function n(o){if(o==null||o==="")throw new Error("id is required");if(!N().isEmbedded)return;const s=await i.sendRaw({type:"notification.mark-read",id:o},1e4),f=G(s);if(f?.success===!1)throw new Error(f.error||"notification.mark-read failed");const _=T.notifications.value.find(O=>O.id===o);_&&(_.is_read=1),await S()}async function g(){if(!N().isEmbedded)return;const o=await i.sendRaw({type:"notification.mark-all-read"},1e4),s=G(o);if(s?.success===!1)throw new Error(s.error||"notification.mark-all-read failed");for(const f of T.notifications.value)f.is_read=1;T.unreadCount.value=0}async function h(o,s=""){if(!N().isEmbedded)throw new Error("桌面通知仅在嵌入式 web-shell 中可用");const f=await i.sendRaw({type:"notification.send-desktop",title:o,body:s},1e4),_=G(f);if(_?.success===!1)throw new Error(_.error||"notification.send-desktop failed")}return{notifications:v(()=>T.notifications.value),unreadCount:v(()=>T.unreadCount.value),refresh:u,refreshUnreadCount:S,markRead:n,markAllRead:g,sendDesktop:h}}const ht={__name:"NotificationBell",setup(i,{expose:u}){u();const S=D(!1),n=D("all"),g=D(!1),{notifications:h,unreadCount:o,refresh:s,markRead:f,markAllRead:_}=re();function O(){P()}z(()=>{window.addEventListener("cc:open-notification-drawer",O)}),$(()=>{window.removeEventListener("cc:open-notification-drawer",O)});const M=v(()=>n.value==="unread"?h.value.filter(c=>!c.is_read):h.value);async function C(){if(N().isEmbedded){g.value=!0;try{await s({limit:100})}catch{}finally{g.value=!1}}}async function P(){S.value=!0,await C()}async function j(c){if(!c.is_read)try{await f(c.id)}catch{}}async function r(){try{await _()}catch(c){console.warn("[NotificationBell] markAllRead failed:",c?.message||c)}}function w(c){if(!c)return"";const b=typeof c=="string"?Date.parse(c):Number(c);if(!Number.isFinite(b))return String(c);const R=Date.now()-b,U=6e4,I=60*U,K=24*I;return R<U?"刚刚":R<I?`${Math.floor(R/U)} 分钟前`:R<K?`${Math.floor(R/I)} 小时前`:new Date(b).toLocaleDateString()}const A={visible:S,filter:n,loading:g,notifications:h,unreadCount:o,refresh:s,markRead:f,markAllRead:_,_onOpenEvent:O,filtered:M,refreshList:C,onOpen:P,onItemClick:j,onMarkAllRead:r,formatTime:w,ref:D,computed:v,onMounted:z,onUnmounted:$,get Empty(){return ke},get BellOutlined(){return de},get ReloadOutlined(){return _e},get useNotifications(){return re},get useShellMode(){return N}};return Object.defineProperty(A,"__isScriptSetup",{enumerable:!1,value:!0}),A}},bt={class:"notif-toolbar"},wt={class:"notif-body"},vt={key:2,class:"notif-list"},Lt=["onClick"],St={class:"notif-row"},Ct={class:"notif-title"},Et={class:"notif-time"},Tt={key:0,class:"notif-message"};function At(i,u,S,n,g,h){const o=k("a-badge"),s=k("a-tooltip"),f=k("a-radio-button"),_=k("a-radio-group"),O=k("a-space"),M=k("a-button"),C=k("a-empty"),P=k("a-spin"),j=k("a-drawer");return p(),L(F,null,[e(s,{title:"通知"},{default:t(()=>[e(o,{count:n.unreadCount,"overflow-count":99,offset:[-4,4]},{default:t(()=>[d("button",{type:"button",class:"notif-bell-btn","aria-label":"通知",onClick:n.onOpen},[e(n.BellOutlined)])]),_:1},8,["count"])]),_:1}),e(j,{open:n.visible,"onUpdate:open":u[1]||(u[1]=r=>n.visible=r),title:"通知中心",placement:"right",width:400,"body-style":{padding:0}},{default:t(()=>[d("div",bt,[e(O,null,{default:t(()=>[e(_,{value:n.filter,"onUpdate:value":u[0]||(u[0]=r=>n.filter=r),size:"small","button-style":"solid"},{default:t(()=>[e(f,{value:"all"},{default:t(()=>[l("全部 ("+a(n.notifications.length)+")",1)]),_:1}),e(f,{value:"unread"},{default:t(()=>[l("未读 ("+a(n.unreadCount)+")",1)]),_:1})]),_:1},8,["value"])]),_:1}),e(O,null,{default:t(()=>[e(M,{size:"small",loading:n.loading,onClick:n.refreshList},{icon:t(()=>[e(n.ReloadOutlined)]),_:1},8,["loading"]),e(M,{size:"small",disabled:n.unreadCount===0,onClick:n.onMarkAllRead},{default:t(()=>[...u[2]||(u[2]=[l(" 全部已读 ",-1)])]),_:1},8,["disabled"])]),_:1})]),d("div",wt,[!n.loading&&n.filtered.length===0?(p(),B(C,{key:0,description:"暂无通知",image:n.Empty.PRESENTED_IMAGE_SIMPLE,style:{padding:"60px 0"}},null,8,["image"])):n.loading?(p(),B(P,{key:1,style:{display:"block",padding:"60px"}})):(p(),L("ul",vt,[(p(!0),L(F,null,se(n.filtered,r=>(p(),L("li",{key:r.id,class:W(["notif-item",{unread:!r.is_read}]),onClick:w=>n.onItemClick(r)},[d("div",St,[d("div",Ct,a(r.title||r.message||"(无标题)"),1),d("span",Et,a(n.formatTime(r.created_at)),1)]),r.message&&r.title?(p(),L("div",Tt,a(r.message),1)):m("v-if",!0)],10,Lt))),128))]))])]),_:1},8,["open"])],64)}const Bt=Z(ht,[["render",At],["__scopeId","data-v-8c1554dd"],["__file","/tmp/cc-web-panel-uCig8c/repo/packages/web-panel/src/components/NotificationBell.vue"]]),Mt={__name:"MobileBridgeHeaderStatus",setup(i,{expose:u}){u();function S(r){if(!r)return[];try{return JSON.parse(r)}catch{}const w=String(r).split(`
|
|
2
|
-
`),A=w.findIndex(c=>{const b=c.trim();if(!b)return!1;const R=b[0];if(R!=="["&&R!=="{")return!1;if(b.length===1)return!0;const U=b[1];return!(U>="A"&&U<="Z"||U>="a"&&U<="z")});if(A<0)return[];for(let c=w.length-1;c>=A;c--){const b=w[c].trim();if(/^[\]\}]/.test(b)&&!/^[\]\}][A-Za-z]/.test(b))try{return JSON.parse(w.slice(A,c+1).join(`
|
|
3
|
-
`))}catch{return[]}}return[]}const n=J(),g=H(),h=D([]);let o=null;const s=v(()=>h.value.length),f=v(()=>h.value.filter(r=>M(r)).length),_=v(()=>s.value===0?"var(--text-muted, #999)":"#52c41a"),O=v(()=>s.value===0?"尚未配对任何手机 — 点击进入配对":`已配对 ${s.value} 台手机 — 点击进入管理`);function M(r){if(!r)return!1;if(typeof r.online=="boolean")return r.online;const w=(r.status||"").toLowerCase();return w==="online"||w==="connected"||w==="active"||w==="paired"}async function C(){if(g.status==="connected")try{const{output:r}=await g.execute("p2p devices --type mobile --json",1e4);h.value=S(r)||[]}catch{}}function P(){n.push("/mobile-bridge")}z(()=>{C(),o=setInterval(C,5e3)}),ee(()=>{o&&(clearInterval(o),o=null)});const j={parseJsonOutput:S,router:n,ws:g,devices:h,get pollTimer(){return o},set pollTimer(r){o=r},totalCount:s,onlineCount:f,iconColor:_,tooltip:O,isOnline:M,refresh:C,onClick:P,ref:D,computed:v,onMounted:z,onBeforeUnmount:ee,get useRouter(){return J},get MobileOutlined(){return ue},get useWsStore(){return H}};return Object.defineProperty(j,"__isScriptSetup",{enumerable:!1,value:!0}),j}},Rt={key:0,class:"mbh-count"};function Dt(i,u,S,n,g,h){const o=k("a-badge"),s=k("a-tooltip");return p(),B(s,{title:n.tooltip},{default:t(()=>[e(o,{count:n.totalCount,"show-zero":!1,"overflow-count":9,offset:[-2,4]},{default:t(()=>[d("button",{type:"button",class:W(["mbh-btn",{"mbh-btn--active":n.totalCount>0}]),onClick:n.onClick},[e(n.MobileOutlined,{style:fe({color:n.iconColor,fontSize:"14px"})},null,8,["style"]),n.totalCount>0?(p(),L("span",Rt,a(n.totalCount),1)):m("v-if",!0)],2)]),_:1},8,["count"])]),_:1},8,["title"])}const Pt=Z(Mt,[["render",Dt],["__scopeId","data-v-e8ef01d6"],["__file","/tmp/cc-web-panel-uCig8c/repo/packages/web-panel/src/components/MobileBridgeHeaderStatus.vue"]]),Y="cc.web-panel.sidebar.openKeys",jt={__name:"AppLayout",setup(i,{expose:u}){u();const S=J(),n=te(),g=H(),h=oe(),{t:o}=ie(),s=N(),f=D(!1),_=window.__CC_CONFIG__||{},O=v(()=>_.mode==="project"),M="v5.0.3.135",C=v(()=>h.current),P=v(()=>h.config.vars["--menu-mode"]),j=v(()=>{const y=n.name?.toLowerCase()||"dashboard";return[{mcptools:"mcp",quickask:"quick-ask",ukeysign:"ukey-sign"}[y]||y]}),r=["g-overview","g-config","g-data","g-advanced","g-enterprise","g-social","g-media","g-extension"];function w(){try{const y=localStorage.getItem(Y);if(y){const E=JSON.parse(y);if(Array.isArray(E))return E.filter(q=>r.includes(q))}}catch{}return[...r]}const A=D(w());ne(A,y=>{try{localStorage.setItem(Y,JSON.stringify(y))}catch{}},{deep:!0});const c=v(()=>g.status),b=v(()=>({connected:"success",connecting:"processing",error:"error",disconnected:"default"})[g.status]||"default"),R=v(()=>{const y=`appLayout.footerStatus.${g.status}`,E=o(y);return E===y?o("appLayout.footerStatus.unknown"):E});function U(y){h.setTheme(y)}const{current:I,supported:K,setLocale:Q}=ae();function ce(){const y=K[(K.indexOf(I.value)+1)%K.length];Q(y)}async function X(y){try{const E=await g.sendRaw({type:"window.open",role:y},1e4);if(E?.ok===!1){V.error(`打开失败:${E.error||"未知"}`);return}const q=E?.result??E;q?.reason==="role_reserved"?V.warning("该窗口角色被保留"):q?.reason}catch(E){V.error(`打开桌面窗口失败:${E.message||E}`)}}async function ye(){le.confirm({title:"切换到桌面壳?",content:"回到 V5/V6 桌面壳。完整 electronAPI 表面(UKey 硬件 / 原生对话框 / 系统设置等)会重新可用,但失去 web-panel 的 SPA 体验。保存后需要重启应用才生效。",okText:"切换并重启",cancelText:"取消",centered:!0,async onOk(){try{const y=await g.sendRaw({type:"shell.switch",target:"desktop"},5e3);if(y?.ok===!1)throw new Error(y.error||"shell.switch returned failure");V.loading({content:"正在重启…",duration:0})}catch(y){const E=y instanceof Error?y.message:String(y);V.error("切换失败:"+E)}}})}function pe({key:y}){if(typeof y=="string"&&y.startsWith("desktop:")){X(y);return}S.push({mcp:"/mcp"}[y]||`/${y}`)}z(()=>g.connect());const x={router:S,route:n,ws:g,themeStore:h,t:o,shellMode:s,collapsed:f,cfg:_,isProject:O,PRODUCT_VERSION:M,currentTheme:C,menuTheme:P,selectedKeys:j,ALL_GROUP_KEYS:r,OPEN_KEYS_LS:Y,loadOpenKeys:w,openKeys:A,wsStatus:c,statusBadge:b,statusText:R,setTheme:U,locale:I,SUPPORTED_LOCALES:K,setLocale:Q,toggleLocale:ce,openDesktopWindow:X,switchToDesktopShell:ye,onMenuClick:pe,ref:D,computed:v,onMounted:z,watch:ne,get useRouter(){return J},get useRoute(){return te},get DashboardOutlined(){return _t},get MessageOutlined(){return gt},get RocketOutlined(){return kt},get AppstoreOutlined(){return mt},get ApiOutlined(){return ft},get FolderOutlined(){return pt},get GlobalOutlined(){return yt},get InfoCircleOutlined(){return ct},get ControlOutlined(){return ut},get FileTextOutlined(){return dt},get CloudServerOutlined(){return st},get BookOutlined(){return rt},get BranchesOutlined(){return lt},get ClockCircleOutlined(){return at},get ThunderboltOutlined(){return it},get ApartmentOutlined(){return ot},get SafetyCertificateOutlined(){return nt},get LockOutlined(){return tt},get WifiOutlined(){return et},get CodeOutlined(){return $e},get ProjectOutlined(){return xe},get WalletOutlined(){return Xe},get TeamOutlined(){return Qe},get BarChartOutlined(){return Ze},get BlockOutlined(){return Ye},get CloudUploadOutlined(){return Je},get ReadOutlined(){return qe},get KeyOutlined(){return He},get VideoCameraOutlined(){return Ge},get ShareAltOutlined(){return ze},get IdcardOutlined(){return We},get UsergroupAddOutlined(){return Ve},get ShoppingOutlined(){return Ke},get SwapOutlined(){return Ie},get AlertOutlined(){return Fe},get SafetyOutlined(){return Ne},get ExperimentOutlined(){return Ue},get DeploymentUnitOutlined(){return je},get BulbOutlined(){return Pe},get BankOutlined(){return De},get PartitionOutlined(){return Re},get AuditOutlined(){return Me},get FileSearchOutlined(){return Be},get TrophyOutlined(){return Ae},get FireOutlined(){return Te},get SearchOutlined(){return Ee},get NumberOutlined(){return Ce},get ClusterOutlined(){return Se},get SoundOutlined(){return Le},get DesktopOutlined(){return ve},get BellOutlined(){return de},get SyncOutlined(){return we},get MobileOutlined(){return ue},get DatabaseOutlined(){return be},get UnorderedListOutlined(){return he},get FileDoneOutlined(){return Oe},get message(){return V},get Modal(){return le},get useWsStore(){return H},get useThemeStore(){return oe},get THEMES(){return ge},get logoSrc(){return Ot},get useShellMode(){return N},get useI18n(){return ie},get useLocale(){return ae},NotificationBell:Bt,MobileBridgeHeaderStatus:Pt};return Object.defineProperty(x,"__isScriptSetup",{enumerable:!1,value:!0}),x}},Ut=["src"],Nt={key:0,class:"logo-text"},Ft={key:0,class:"mode-banner project"},It={class:"banner-info"},Kt={class:"banner-name"},Vt={class:"banner-sub"},Wt={key:1,class:"mode-banner global"},zt={class:"banner-name"},Gt=["title"],Ht={class:"group-label"},qt={class:"group-label"},Jt={class:"group-label"},Yt={class:"group-label"},Zt={class:"group-label"},Qt={class:"group-label"},Xt={class:"group-label"},xt={class:"group-label"},$t={class:"group-label"},en={key:0,class:"footer-text"},tn={class:"header-left"},nn={class:"header-right"},on={class:"theme-switcher"},an=["data-theme-key","onClick"],ln=["data-locale"],rn={class:"lang-switch-label"},sn={class:"version-tag"};function dn(i,u,S,n,g,h){const o=k("a-menu-item"),s=k("a-sub-menu"),f=k("a-menu-divider"),_=k("a-menu"),O=k("a-badge"),M=k("a-layout-sider"),C=k("a-tooltip"),P=k("a-tag"),j=k("a-layout-header"),r=k("router-view"),w=k("a-layout-content"),A=k("a-layout");return p(),B(A,{class:"app-root"},{default:t(()=>[m(" ── Sidebar ─────────────────────────────────────────────────── "),e(M,{collapsed:n.collapsed,"onUpdate:collapsed":u[2]||(u[2]=c=>n.collapsed=c),collapsible:"","collapsed-width":56,width:216,class:"sidebar"},{default:t(()=>[m(" Logo "),d("div",{class:W(["logo",{collapsed:n.collapsed}])},[d("img",{src:n.logoSrc,alt:"ChainlessChain",class:"logo-icon"},null,8,Ut),n.collapsed?m("v-if",!0):(p(),L("span",Nt,"ChainlessChain"))],2),m(" Mode banner "),n.collapsed?(p(),L("div",{key:1,class:"mode-icon-sm",title:n.isProject?n.cfg.projectName:i.$t("appLayout.scope.global")},[n.isProject?(p(),B(n.FolderOutlined,{key:0,style:{color:"#1677ff"}})):(p(),B(n.GlobalOutlined,{key:1,style:{color:"#722ed1"}}))],8,Gt)):(p(),L(F,{key:0},[n.isProject?(p(),L("div",Ft,[e(n.FolderOutlined,{class:"banner-icon"}),d("div",It,[d("div",Kt,a(n.cfg.projectName||i.$t("appLayout.scope.fallbackProject")),1),d("div",Vt,a(i.$t("appLayout.scope.projectPanel")),1)])])):(p(),L("div",Wt,[e(n.GlobalOutlined,{class:"banner-icon"}),d("span",zt,a(i.$t("appLayout.scope.global")),1)]))],64)),m(" Navigation "),e(_,{selectedKeys:n.selectedKeys,"onUpdate:selectedKeys":u[0]||(u[0]=c=>n.selectedKeys=c),openKeys:n.openKeys,"onUpdate:openKeys":u[1]||(u[1]=c=>n.openKeys=c),theme:n.menuTheme,mode:"inline","inline-collapsed":n.collapsed,class:"side-menu",onClick:n.onMenuClick},{default:t(()=>[n.collapsed?(p(),L(F,{key:1},[e(o,{key:"dashboard"},{icon:t(()=>[e(n.DashboardOutlined)]),_:1}),e(o,{key:"chat"},{icon:t(()=>[e(n.MessageOutlined)]),_:1}),e(o,{key:"quick-ask"},{icon:t(()=>[e(n.ThunderboltOutlined)]),_:1}),e(o,{key:"cowork"},{icon:t(()=>[e(n.RocketOutlined)]),_:1}),e(o,{key:"services"},{icon:t(()=>[e(n.ControlOutlined)]),_:1}),e(o,{key:"aiops"},{icon:t(()=>[e(n.AlertOutlined)]),_:1}),e(o,{key:"tokens"},{icon:t(()=>[e(n.NumberOutlined)]),_:1}),e(o,{key:"logs"},{icon:t(()=>[e(n.FileTextOutlined)]),_:1}),e(f,{class:"divider-sm"}),e(o,{key:"skills"},{icon:t(()=>[e(n.AppstoreOutlined)]),_:1}),e(o,{key:"providers"},{icon:t(()=>[e(n.ApiOutlined)]),_:1}),e(o,{key:"mcp"},{icon:t(()=>[e(n.CloudServerOutlined)]),_:1}),e(o,{key:"project-settings"},{icon:t(()=>[e(n.FolderOutlined)]),_:1}),e(o,{key:"speech-settings"},{icon:t(()=>[e(n.SoundOutlined)]),_:1}),e(o,{key:"notification-settings"},{icon:t(()=>[e(n.BellOutlined)]),_:1}),e(o,{key:"sync-settings"},{icon:t(()=>[e(n.SyncOutlined)]),_:1}),e(o,{key:"nlprog"},{icon:t(()=>[e(n.BulbOutlined)]),_:1}),e(o,{key:"codegen"},{icon:t(()=>[e(n.CodeOutlined)]),_:1}),e(f,{class:"divider-sm"}),e(o,{key:"notes"},{icon:t(()=>[e(n.BookOutlined)]),_:1}),e(o,{key:"search"},{icon:t(()=>[e(n.SearchOutlined)]),_:1}),e(o,{key:"memory"},{icon:t(()=>[e(n.BranchesOutlined)]),_:1}),e(o,{key:"knowledge"},{icon:t(()=>[e(n.ShareAltOutlined)]),_:1}),e(o,{key:"personal-data-hub"},{icon:t(()=>[e(n.DatabaseOutlined)]),_:1}),e(o,{key:"personal-data-hub/browser"},{icon:t(()=>[e(n.UnorderedListOutlined)]),_:1}),e(o,{key:"marketplace"},{icon:t(()=>[e(n.ShoppingOutlined)]),_:1}),e(o,{key:"cron"},{icon:t(()=>[e(n.ClockCircleOutlined)]),_:1}),e(o,{key:"workflow"},{icon:t(()=>[e(n.ApartmentOutlined)]),_:1}),e(o,{key:"pipeline"},{icon:t(()=>[e(n.PartitionOutlined)]),_:1}),e(o,{key:"tasks"},{icon:t(()=>[e(n.ThunderboltOutlined)]),_:1}),e(o,{key:"background-agents"},{icon:t(()=>[e(n.RocketOutlined)]),_:1}),e(o,{key:"artifacts"},{icon:t(()=>[e(n.FileDoneOutlined)]),_:1}),e(f,{class:"divider-sm"}),e(o,{key:"security"},{icon:t(()=>[e(n.SafetyCertificateOutlined)]),_:1}),e(o,{key:"ukey-sign"},{icon:t(()=>[e(n.KeyOutlined)]),_:1}),e(o,{key:"trust"},{icon:t(()=>[e(n.SafetyOutlined)]),_:1}),e(o,{key:"audit"},{icon:t(()=>[e(n.FileSearchOutlined)]),_:1}),e(o,{key:"mtc"},{icon:t(()=>[e(n.SafetyOutlined)]),_:1}),e(o,{key:"mtc-audit"},{icon:t(()=>[e(n.SafetyOutlined)]),_:1}),e(o,{key:"multisig"},{icon:t(()=>[e(n.TeamOutlined)]),_:1}),e(o,{key:"did"},{icon:t(()=>[e(n.IdcardOutlined)]),_:1}),e(o,{key:"permissions"},{icon:t(()=>[e(n.LockOutlined)]),_:1}),e(o,{key:"p2p"},{icon:t(()=>[e(n.WifiOutlined)]),_:1}),e(o,{key:"mobile-bridge"},{icon:t(()=>[e(n.MobileOutlined)]),_:1}),e(o,{key:"terminal"},{icon:t(()=>[e(n.DesktopOutlined)]),_:1}),e(o,{key:"backup"},{icon:t(()=>[e(n.CloudUploadOutlined)]),_:1}),e(o,{key:"git"},{icon:t(()=>[e(n.CodeOutlined)]),_:1}),e(o,{key:"projects"},{icon:t(()=>[e(n.ProjectOutlined)]),_:1}),e(o,{key:"crosschain"},{icon:t(()=>[e(n.SwapOutlined)]),_:1}),e(o,{key:"compliance"},{icon:t(()=>[e(n.SafetyOutlined)]),_:1}),e(o,{key:"privacy"},{icon:t(()=>[e(n.ExperimentOutlined)]),_:1}),e(o,{key:"inference"},{icon:t(()=>[e(n.DeploymentUnitOutlined)]),_:1}),e(o,{key:"federation"},{icon:t(()=>[e(n.ClusterOutlined)]),_:1}),e(f,{class:"divider-sm"}),e(o,{key:"wallet"},{icon:t(()=>[e(n.WalletOutlined)]),_:1}),e(o,{key:"organization"},{icon:t(()=>[e(n.TeamOutlined)]),_:1}),e(o,{key:"tenant"},{icon:t(()=>[e(n.BankOutlined)]),_:1}),e(o,{key:"sla"},{icon:t(()=>[e(n.DashboardOutlined)]),_:1}),e(o,{key:"analytics"},{icon:t(()=>[e(n.BarChartOutlined)]),_:1}),e(o,{key:"templates"},{icon:t(()=>[e(n.BlockOutlined)]),_:1}),e(f,{class:"divider-sm"}),e(o,{key:"community"},{icon:t(()=>[e(n.UsergroupAddOutlined)]),_:1}),e(o,{key:"governance"},{icon:t(()=>[e(n.AuditOutlined)]),_:1}),e(o,{key:"reputation"},{icon:t(()=>[e(n.TrophyOutlined)]),_:1}),e(o,{key:"recommend"},{icon:t(()=>[e(n.FireOutlined)]),_:1}),e(f,{class:"divider-sm"}),e(o,{key:"rssfeed"},{icon:t(()=>[e(n.ReadOutlined)]),_:1}),e(o,{key:"webauthn"},{icon:t(()=>[e(n.KeyOutlined)]),_:1}),n.shellMode.isEmbedded?(p(),L(F,{key:0},[e(f,{class:"divider-sm"}),e(o,{key:"desktop:hardware-wallet"},{icon:t(()=>[e(n.SafetyCertificateOutlined)]),_:1}),e(o,{key:"desktop:backup-dashboard"},{icon:t(()=>[e(n.CloudUploadOutlined)]),_:1}),e(o,{key:"desktop:llm-test-chat"},{icon:t(()=>[e(n.ExperimentOutlined)]),_:1}),e(o,{key:"desktop:settings"},{icon:t(()=>[e(n.ControlOutlined)]),_:1})],64)):m("v-if",!0)],64)):(p(),L(F,{key:0},[e(s,{key:"g-overview"},{title:t(()=>[d("span",Ht,a(i.$t("appLayout.groups.overview")),1)]),default:t(()=>[e(o,{key:"dashboard"},{icon:t(()=>[e(n.DashboardOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.dashboard")),1)]),_:1}),e(o,{key:"chat"},{icon:t(()=>[e(n.MessageOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.chat")),1)]),_:1}),e(o,{key:"quick-ask"},{icon:t(()=>[e(n.ThunderboltOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.quickAsk")),1)]),_:1}),e(o,{key:"cowork"},{icon:t(()=>[e(n.RocketOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.cowork")),1)]),_:1}),e(o,{key:"services"},{icon:t(()=>[e(n.ControlOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.services")),1)]),_:1}),e(o,{key:"aiops"},{icon:t(()=>[e(n.AlertOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.aiops")),1)]),_:1}),e(o,{key:"tokens"},{icon:t(()=>[e(n.NumberOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.tokens")),1)]),_:1}),e(o,{key:"logs"},{icon:t(()=>[e(n.FileTextOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.logs")),1)]),_:1})]),_:1}),e(s,{key:"g-config"},{title:t(()=>[d("span",qt,a(i.$t("appLayout.groups.config")),1)]),default:t(()=>[e(o,{key:"skills"},{icon:t(()=>[e(n.AppstoreOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.skills")),1)]),_:1}),e(o,{key:"providers"},{icon:t(()=>[e(n.ApiOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.providers")),1)]),_:1}),e(o,{key:"mcp"},{icon:t(()=>[e(n.CloudServerOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.mcp")),1)]),_:1}),e(o,{key:"project-settings"},{icon:t(()=>[e(n.FolderOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.projectSettings")),1)]),_:1}),e(o,{key:"speech-settings"},{icon:t(()=>[e(n.SoundOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.speechSettings")),1)]),_:1}),e(o,{key:"notification-settings"},{icon:t(()=>[e(n.BellOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.notificationSettings")),1)]),_:1}),e(o,{key:"sync-settings"},{icon:t(()=>[e(n.SyncOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.syncSettings")),1)]),_:1}),e(o,{key:"nlprog"},{icon:t(()=>[e(n.BulbOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.nlprog")),1)]),_:1}),e(o,{key:"codegen"},{icon:t(()=>[e(n.CodeOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.codegen")),1)]),_:1})]),_:1}),e(s,{key:"g-data"},{title:t(()=>[d("span",Jt,a(i.$t("appLayout.groups.data")),1)]),default:t(()=>[e(o,{key:"notes"},{icon:t(()=>[e(n.BookOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.notes")),1)]),_:1}),e(o,{key:"search"},{icon:t(()=>[e(n.SearchOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.search")),1)]),_:1}),e(o,{key:"memory"},{icon:t(()=>[e(n.BranchesOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.memory")),1)]),_:1}),e(o,{key:"knowledge"},{icon:t(()=>[e(n.ShareAltOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.knowledge")),1)]),_:1}),e(o,{key:"personal-data-hub"},{icon:t(()=>[e(n.DatabaseOutlined)]),default:t(()=>[u[3]||(u[3]=l("个人数据中台",-1))]),_:1}),e(o,{key:"personal-data-hub/browser"},{icon:t(()=>[e(n.UnorderedListOutlined)]),default:t(()=>[u[4]||(u[4]=l("数据浏览器",-1))]),_:1}),e(o,{key:"family-guard"},{icon:t(()=>[e(n.TeamOutlined)]),default:t(()=>[u[5]||(u[5]=l("家庭守护",-1))]),_:1}),e(o,{key:"marketplace"},{icon:t(()=>[e(n.ShoppingOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.marketplace")),1)]),_:1}),e(o,{key:"cron"},{icon:t(()=>[e(n.ClockCircleOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.cron")),1)]),_:1}),e(o,{key:"workflow"},{icon:t(()=>[e(n.ApartmentOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.workflow")),1)]),_:1}),e(o,{key:"pipeline"},{icon:t(()=>[e(n.PartitionOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.pipeline")),1)]),_:1}),e(o,{key:"tasks"},{icon:t(()=>[e(n.ThunderboltOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.tasks")),1)]),_:1}),e(o,{key:"background-agents"},{icon:t(()=>[e(n.RocketOutlined)]),default:t(()=>[u[6]||(u[6]=l("后台 Agent",-1))]),_:1}),e(o,{key:"artifacts"},{icon:t(()=>[e(n.FileDoneOutlined)]),default:t(()=>[u[7]||(u[7]=l("交付物",-1))]),_:1})]),_:1}),e(s,{key:"g-advanced"},{title:t(()=>[d("span",Yt,a(i.$t("appLayout.groups.advanced")),1)]),default:t(()=>[e(o,{key:"security"},{icon:t(()=>[e(n.SafetyCertificateOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.security")),1)]),_:1}),e(o,{key:"ukey-sign"},{icon:t(()=>[e(n.KeyOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.ukeySign")),1)]),_:1}),e(o,{key:"trust"},{icon:t(()=>[e(n.SafetyOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.trust")),1)]),_:1}),e(o,{key:"audit"},{icon:t(()=>[e(n.FileSearchOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.audit")),1)]),_:1}),e(o,{key:"mtc"},{icon:t(()=>[e(n.SafetyOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.mtc")),1)]),_:1}),e(o,{key:"mtc-audit"},{icon:t(()=>[e(n.SafetyOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.mtcAudit","MTC 审计")),1)]),_:1}),e(o,{key:"multisig"},{icon:t(()=>[e(n.TeamOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.multisig","M-of-N 多签")),1)]),_:1}),e(o,{key:"did"},{icon:t(()=>[e(n.IdcardOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.did")),1)]),_:1}),e(o,{key:"permissions"},{icon:t(()=>[e(n.LockOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.permissions")),1)]),_:1}),e(o,{key:"p2p"},{icon:t(()=>[e(n.WifiOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.p2p")),1)]),_:1}),e(o,{key:"mobile-bridge"},{icon:t(()=>[e(n.MobileOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.mobileBridge","移动桥")),1)]),_:1}),e(o,{key:"remote-session"},{icon:t(()=>[e(n.DesktopOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.remoteSession","远程会话")),1)]),_:1}),e(o,{key:"mobile-projects"},{icon:t(()=>[e(n.MobileOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.mobileProjects","手机项目 (v0.2)")),1)]),_:1}),e(o,{key:"terminal"},{icon:t(()=>[e(n.DesktopOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.terminal","远程终端")),1)]),_:1}),e(o,{key:"backup"},{icon:t(()=>[e(n.CloudUploadOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.backup")),1)]),_:1}),e(o,{key:"git"},{icon:t(()=>[e(n.CodeOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.git")),1)]),_:1}),e(o,{key:"projects"},{icon:t(()=>[e(n.ProjectOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.projects")),1)]),_:1}),e(o,{key:"crosschain"},{icon:t(()=>[e(n.SwapOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.crosschain")),1)]),_:1}),e(o,{key:"compliance"},{icon:t(()=>[e(n.SafetyOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.compliance")),1)]),_:1}),e(o,{key:"privacy"},{icon:t(()=>[e(n.ExperimentOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.privacy")),1)]),_:1}),e(o,{key:"inference"},{icon:t(()=>[e(n.DeploymentUnitOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.inference")),1)]),_:1}),e(o,{key:"federation"},{icon:t(()=>[e(n.ClusterOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.federation")),1)]),_:1})]),_:1}),e(s,{key:"g-enterprise"},{title:t(()=>[d("span",Zt,a(i.$t("appLayout.groups.enterprise")),1)]),default:t(()=>[e(o,{key:"wallet"},{icon:t(()=>[e(n.WalletOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.wallet")),1)]),_:1}),e(o,{key:"organization"},{icon:t(()=>[e(n.TeamOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.organization")),1)]),_:1}),e(o,{key:"tenant"},{icon:t(()=>[e(n.BankOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.tenant")),1)]),_:1}),e(o,{key:"sla"},{icon:t(()=>[e(n.DashboardOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.sla")),1)]),_:1}),e(o,{key:"analytics"},{icon:t(()=>[e(n.BarChartOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.analytics")),1)]),_:1}),e(o,{key:"templates"},{icon:t(()=>[e(n.BlockOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.templates")),1)]),_:1})]),_:1}),e(s,{key:"g-social"},{title:t(()=>[d("span",Qt,a(i.$t("appLayout.groups.social")),1)]),default:t(()=>[e(o,{key:"community"},{icon:t(()=>[e(n.UsergroupAddOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.community")),1)]),_:1}),e(o,{key:"governance"},{icon:t(()=>[e(n.AuditOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.governance")),1)]),_:1}),e(o,{key:"reputation"},{icon:t(()=>[e(n.TrophyOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.reputation")),1)]),_:1}),e(o,{key:"recommend"},{icon:t(()=>[e(n.FireOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.recommend")),1)]),_:1})]),_:1}),e(s,{key:"g-media"},{title:t(()=>[d("span",Xt,a(i.$t("appLayout.groups.media")),1)]),default:t(()=>[e(o,{key:"video"},{icon:t(()=>[e(n.VideoCameraOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.video")),1)]),_:1})]),_:1}),e(s,{key:"g-extension"},{title:t(()=>[d("span",xt,a(i.$t("appLayout.groups.extension")),1)]),default:t(()=>[e(o,{key:"rssfeed"},{icon:t(()=>[e(n.ReadOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.rssfeed")),1)]),_:1}),e(o,{key:"webauthn"},{icon:t(()=>[e(n.KeyOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.webauthn")),1)]),_:1})]),_:1}),m(` Desktop-only group — only shown in the embedded web-shell. Each
|
|
4
|
-
click opens a new BrowserWindow loading the V5/V6 desktop
|
|
5
|
-
renderer (full electronAPI / UKey / FS / settings live there). `),n.shellMode.isEmbedded?(p(),B(s,{key:"g-desktop"},{title:t(()=>[d("span",$t,a(i.$t("appLayout.groups.desktop")),1)]),default:t(()=>[e(o,{key:"desktop:hardware-wallet"},{icon:t(()=>[e(n.SafetyCertificateOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.desktopHardware")),1)]),_:1}),e(o,{key:"desktop:backup-dashboard"},{icon:t(()=>[e(n.CloudUploadOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.desktopBackup")),1)]),_:1}),e(o,{key:"desktop:llm-test-chat"},{icon:t(()=>[e(n.ExperimentOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.desktopLlmTest")),1)]),_:1}),e(o,{key:"desktop:settings"},{icon:t(()=>[e(n.ControlOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.desktopSettings")),1)]),_:1})]),_:1})):m("v-if",!0)],64))]),_:1},8,["selectedKeys","openKeys","theme","inline-collapsed"]),m(" Connection status "),d("div",{class:W(["sidebar-footer",{collapsed:n.collapsed}])},[e(O,{status:n.statusBadge},null,8,["status"]),n.collapsed?m("v-if",!0):(p(),L("span",en,a(n.statusText),1))],2)]),_:1},8,["collapsed"]),m(" ── Main area ───────────────────────────────────────────────── "),e(A,{class:"main-area"},{default:t(()=>[m(" Header "),e(j,{class:"app-header"},{default:t(()=>[d("div",tn,[d("div",{class:W(["scope-tag",n.isProject?"project":"global"])},[(p(),B(me(n.isProject?n.FolderOutlined:n.GlobalOutlined))),d("span",null,a(n.isProject?n.cfg.projectName||i.$t("appLayout.scope.fallbackProject"):i.$t("appLayout.scope.global")),1),n.isProject&&n.cfg.projectRoot?(p(),B(C,{key:0,title:n.cfg.projectRoot},{default:t(()=>[e(n.InfoCircleOutlined,{class:"info-icon"})]),_:1},8,["title"])):m("v-if",!0)],2)]),d("div",nn,[m(" Theme switcher "),d("div",on,[(p(!0),L(F,null,se(n.THEMES,(c,b)=>(p(),B(C,{key:b,title:c.label},{default:t(()=>[d("button",{class:W(["theme-btn",{active:n.currentTheme===b}]),"data-theme-key":b,onClick:R=>n.setTheme(b)},a(c.icon),11,an)]),_:2},1032,["title"]))),128))]),m(` Language switcher (incremental i18n; only owns its own
|
|
6
|
-
labels + ErrorBoundary + common.* today). `),e(C,{title:i.$t("language.label")},{default:t(()=>[d("button",{class:"lang-switch-btn","data-locale":n.locale,onClick:n.toggleLocale},[e(n.GlobalOutlined,{class:"lang-switch-icon"}),d("span",rn,a(i.$t("language.switch")),1)],8,ln)]),_:1},8,["title"]),m(" Mobile bridge status — pill showing online/total paired phones.\n Click to /mobile-bridge. Polls every 5s via `p2p devices` CLI. "),e(n.MobileBridgeHeaderStatus),m(` Notification bell — only meaningful in the embedded web-shell
|
|
7
|
-
where notification.* WS topics are registered. In pure-browser
|
|
8
|
-
mode the composable returns empty / no-op shapes, so the badge
|
|
9
|
-
just shows 0 and the drawer is empty. `),n.shellMode.isEmbedded?(p(),B(n.NotificationBell,{key:0})):m("v-if",!0),d("span",sn,a(n.PRODUCT_VERSION),1),m(" Phase 1.6 symmetric switch: only inside the embedded\n desktop shell does this make sense (no-op in `cc serve`\n browser mode where there's no V5/V6 to fall back to). "),n.shellMode.isEmbedded?(p(),B(C,{key:1,title:i.$t("appLayout.shellSwitch")},{default:t(()=>[d("button",{type:"button",class:"shell-switch-btn",onClick:n.switchToDesktopShell},[e(n.DesktopOutlined)])]),_:1},8,["title"])):m("v-if",!0),e(P,{color:n.wsStatus==="connected"?"green":n.wsStatus==="connecting"?"orange":"red",class:"ws-tag"},{default:t(()=>[l(a(n.wsStatus==="connected"?i.$t("appLayout.wsStatus.connected"):n.wsStatus==="connecting"?i.$t("appLayout.wsStatus.connecting"):i.$t("appLayout.wsStatus.disconnected")),1)]),_:1},8,["color"])])]),_:1}),m(" Content "),e(w,{class:"page-content"},{default:t(()=>[e(r)]),_:1})]),_:1})]),_:1})}const Pn=Z(jt,[["render",dn],["__scopeId","data-v-6f6437fc"],["__file","/tmp/cc-web-panel-uCig8c/repo/packages/web-panel/src/components/AppLayout.vue"]]);export{Pn as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as v,P as u,J as S,U as n,R as a,S as y,K as C,Q as x,V as w,_ as B,b as s}from"./vendor-Bn1JzzAn.js";import{_ as k}from"./index-DCcXU9HN.js";import"./icons-DG5UD-6K.js";const N={__name:"ChatBubbleRenderer",props:{event:{type:Object,required:!0}},setup(c,{expose:i}){i();const t=c,r=s(()=>{const e=t.event.content||{};return e.text||e.body||e.message||e.title||JSON.stringify(e).slice(0,200)}),d=s(()=>{const e=t.event.content||{};return e.from||e.sender||e.senderName||t.event.actor||"(unknown)"}),l=s(()=>{const e=(t.event.actor||"").toLowerCase();return e.includes("self")||e==="me"||e.endsWith("_self")}),o=s(()=>{const e=t.event.source.adapter||"";return e.startsWith("messaging-qq")?"magenta":e==="wechat"?"green":"blue"}),m=s(()=>{if(!t.event.occurredAt)return"";try{const e=new Date(t.event.occurredAt),p=e.getFullYear(),g=String(e.getMonth()+1).padStart(2,"0"),f=String(e.getDate()).padStart(2,"0"),b=String(e.getHours()).padStart(2,"0"),h=String(e.getMinutes()).padStart(2,"0");return`${p}-${g}-${f} ${b}:${h}`}catch{return""}}),_={props:t,messageText:r,actorLabel:d,isMine:l,adapterColor:o,formattedTime:m,computed:s};return Object.defineProperty(_,"__isScriptSetup",{enumerable:!1,value:!0}),_}},T={class:"bubble"},M={class:"meta"},R={class:"actor"},V={class:"time"},q={class:"body"};function D(c,i,t,r,d,l){const o=v("a-tag");return u(),S("div",{class:B(["chat-row",{mine:r.isMine}])},[n("div",T,[n("div",M,[n("span",R,a(r.actorLabel),1),n("span",V,a(r.formattedTime),1)]),n("div",q,a(r.messageText),1),t.event.source.adapter?(u(),y(o,{key:0,class:"src",color:r.adapterColor},{default:C(()=>[x(a(t.event.source.adapter),1)]),_:1},8,["color"])):w("v-if",!0)])],2)}const A=k(N,[["render",D],["__scopeId","data-v-49238629"],["__file","/tmp/cc-web-panel-uCig8c/repo/packages/web-panel/src/components/pdh/renderers/ChatBubbleRenderer.vue"]]);export{A as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{P as a,J as p,b as c}from"./vendor-Bn1JzzAn.js";import{r as s}from"./markdown-Yo_c6Krv.js";import{_ as d}from"./index-DCcXU9HN.js";const _={__name:"MarkdownRenderer",props:{content:{type:String,default:""}},setup(t,{expose:o}){o();const e=t,r=c(()=>s(e.content||"")),n={props:e,rendered:r,computed:c,get renderMarkdown(){return s}};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}},i=["innerHTML"];function u(t,o,e,r,n,m){return a(),p("div",{class:"markdown-content",innerHTML:r.rendered},null,8,i)}const w=d(_,[["render",u],["__scopeId","data-v-0b0b9f63"],["__file","/tmp/cc-web-panel-uCig8c/repo/packages/web-panel/src/components/MarkdownRenderer.vue"]]);export{w as M};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as c,J as g,c as l,K as r,N as u,P as h,U as o,R as t,Q as b}from"./vendor-Bn1JzzAn.js";import{_ as v,b as m}from"./index-DCcXU9HN.js";import{a8 as y,M}from"./icons-DG5UD-6K.js";const B={__name:"MobileProjects",setup(p,{expose:i}){i();const n=u(),{t:e}=m();function a(){n.push("/projects")}function _(){n.push("/mobile-bridge")}const s={router:n,t:e,goToProjects:a,goToMobileBridge:_,get useRouter(){return u},get useI18n(){return m},get MobileOutlined(){return M},get FolderOutlined(){return y}};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}},x={class:"mobile-projects-placeholder"},O={class:"title"},k={class:"subtitle"},w={class:"explainer"};function T(p,i,n,e,a,_){const s=c("a-alert"),d=c("a-button"),f=c("a-space"),P=c("a-empty"),j=c("a-card");return h(),g("div",x,[l(j,null,{default:r(()=>[l(P,{description:!1},{image:r(()=>[l(e.MobileOutlined,{style:{fontSize:"64px",color:"#bfbfbf"}})]),default:r(()=>[o("h2",O,t(e.t("mobileProjects.title")),1),o("p",k,t(e.t("mobileProjects.subtitle")),1),l(s,{message:e.t("mobileProjects.v02Banner"),type:"info","show-icon":"",class:"banner"},null,8,["message"]),o("div",w,[o("h3",null,t(e.t("mobileProjects.currentDirection")),1),o("p",null,t(e.t("mobileProjects.currentDirectionBody")),1),o("ul",null,[o("li",null,t(e.t("mobileProjects.stepPhone")),1),o("li",null,t(e.t("mobileProjects.stepTap")),1),o("li",null,t(e.t("mobileProjects.stepPull")),1)]),o("h3",null,t(e.t("mobileProjects.reverseDirection")),1),o("p",null,t(e.t("mobileProjects.reverseDirectionBody")),1)]),l(f,{class:"actions"},{default:r(()=>[l(d,{type:"primary",onClick:e.goToProjects},{default:r(()=>[l(e.FolderOutlined),b(" "+t(e.t("mobileProjects.viewLocalProjects")),1)]),_:1}),l(d,{onClick:e.goToMobileBridge},{default:r(()=>[l(e.MobileOutlined),b(" "+t(e.t("mobileProjects.checkBridge")),1)]),_:1})]),_:1})]),_:1})]),_:1})])}const N=v(B,[["render",T],["__scopeId","data-v-9262cc45"],["__file","/tmp/cc-web-panel-uCig8c/repo/packages/web-panel/src/views/MobileProjects.vue"]]);export{N as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{E as F,b as D,r as R,I as p,J as c,U as _,c as n,K as a,S,V as x,o as I,x as V,P as i,Q as k,R as r,F as T,Z as O}from"./vendor-Bn1JzzAn.js";import{u as P,_ as E}from"./index-DCcXU9HN.js";import{R as U}from"./icons-DG5UD-6K.js";const B=F("tasks",()=>{const y=R([]),l=R(!1);let u=null,t=null,d=null;const b=D(()=>y.value.filter(e=>e.status==="running")),v=D(()=>y.value.filter(e=>e.status==="pending")),w=D(()=>y.value.filter(e=>e.status==="completed"||e.status==="failed"||e.status==="timeout"));async function s(){const e=P();l.value=!0;try{const g=await e.sendRaw({type:"tasks-list"});g&&Array.isArray(g.tasks)&&(y.value=g.tasks)}catch{}finally{l.value=!1}}async function m(e){const g=P();try{await g.sendRaw({type:"tasks-stop",taskId:e})}catch{}finally{await s()}}const f=R(null);function h(e=5e3){N(),s(),u=setInterval(s,e),C()}function N(){u&&(clearInterval(u),u=null),t&&(t(),t=null),d&&(clearTimeout(d),d=null)}function C(){const e=P();if(t)return;const g=z=>{z.type==="task:notification"&&z.payload?.task&&(f.value=z.payload.task,s(),d&&clearTimeout(d),d=setTimeout(()=>{f.value=null,d=null},8e3))};t=e.onRuntimeEvent(g)}function A(e){return!e||e<0?"-":e<1e3?`${e}ms`:e<6e4?`${(e/1e3).toFixed(1)}s`:`${(e/6e4).toFixed(1)}m`}function o(e){switch(e){case"running":return"processing";case"pending":return"default";case"completed":return"success";case"failed":return"error";case"timeout":return"warning";default:return"default"}}return{tasks:y,loading:l,running:b,pending:v,completed:w,lastNotification:f,fetchTasks:s,stopTask:m,startPolling:h,stopPolling:N,formatDuration:A,getStatusColor:o}}),L={__name:"Tasks",setup(y,{expose:l}){l();const u=B(),t=[{title:"状态",key:"status",width:90},{title:"描述",key:"description",ellipsis:!0},{title:"类型",dataIndex:"type",width:100},{title:"耗时",key:"duration",width:90},{title:"创建时间",key:"createdAt",width:180},{title:"结果",key:"result",ellipsis:!0},{title:"操作",key:"action",width:80}];function d(s){return s.status==="running"&&s.startedAt?u.formatDuration(Date.now()-s.startedAt):s.completedAt&&s.startedAt?u.formatDuration(s.completedAt-s.startedAt):"-"}function b(s){return s?new Date(s).toLocaleString():"-"}function v(s,m){return s?s.length>m?`${s.slice(0,m)}...`:s:""}I(()=>u.startPolling(5e3)),V(()=>u.stopPolling());const w={store:u,columns:t,getDuration:d,formatTime:b,truncate:v,onMounted:I,onUnmounted:V,get ReloadOutlined(){return U},get useTasksStore(){return B}};return Object.defineProperty(w,"__isScriptSetup",{enumerable:!1,value:!0}),w}},j={class:"page-header"},J={key:0,class:"error-text"},K={key:1},M={class:"task-header"},Q={class:"task-desc"},W={class:"task-id"},Z={class:"task-meta"},q=["title"],G={key:0,class:"error-text"},H={key:1,class:"success-text"},X={key:2,class:"muted-text"};function Y(y,l,u,t,d,b){const v=p("a-button"),w=p("a-space"),s=p("a-alert"),m=p("a-statistic"),f=p("a-card"),h=p("a-col"),N=p("a-row"),C=p("a-tag"),A=p("a-table");return i(),c("div",null,[_("div",j,[l[3]||(l[3]=_("div",null,[_("h2",{class:"page-title"},"后台任务"),_("p",{class:"page-sub"},"查看后台任务队列、实时通知和任务执行结果。")],-1)),n(w,null,{default:a(()=>[n(v,{ghost:"",loading:t.store.loading,onClick:l[0]||(l[0]=o=>t.store.fetchTasks())},{icon:a(()=>[n(t.ReloadOutlined)]),default:a(()=>[l[2]||(l[2]=k(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),t.store.lastNotification?(i(),S(s,{key:0,type:t.store.lastNotification.status==="completed"?"success":"error","show-icon":"",closable:"",class:"banner",onClose:l[1]||(l[1]=o=>t.store.lastNotification=null)},{message:a(()=>[k(" 任务"+r(t.store.lastNotification.status==="completed"?"完成":"结束")+": "+r(t.store.lastNotification.description||t.store.lastNotification.id.slice(0,16)),1)]),description:a(()=>[t.store.lastNotification.error?(i(),c("span",J,r(t.store.lastNotification.error),1)):t.store.lastNotification.result?(i(),c("span",K,r(t.truncate(String(t.store.lastNotification.result),120)),1)):x("v-if",!0)]),_:1},8,["type"])):x("v-if",!0),n(N,{gutter:[16,16],class:"stats-row"},{default:a(()=>[n(h,{xs:12,sm:6},{default:a(()=>[n(f,{class:"stat-card",size:"small"},{default:a(()=>[n(m,{title:"全部任务",value:t.store.tasks.length},null,8,["value"])]),_:1})]),_:1}),n(h,{xs:12,sm:6},{default:a(()=>[n(f,{class:"stat-card",size:"small"},{default:a(()=>[n(m,{title:"运行中",value:t.store.running.length},null,8,["value"])]),_:1})]),_:1}),n(h,{xs:12,sm:6},{default:a(()=>[n(f,{class:"stat-card",size:"small"},{default:a(()=>[n(m,{title:"等待中",value:t.store.pending.length},null,8,["value"])]),_:1})]),_:1}),n(h,{xs:12,sm:6},{default:a(()=>[n(f,{class:"stat-card",size:"small"},{default:a(()=>[n(m,{title:"已完成",value:t.store.completed.length},null,8,["value"])]),_:1})]),_:1})]),_:1}),t.store.running.length>0?(i(),S(f,{key:1,title:"运行中的任务",class:"panel-card",size:"small"},{default:a(()=>[(i(!0),c(T,null,O(t.store.running,o=>(i(),c("div",{key:o.id,class:"task-item running"},[_("div",M,[n(C,{color:t.store.getStatusColor(o.status)},{default:a(()=>[k(r(o.status.toUpperCase()),1)]),_:2},1032,["color"]),_("span",Q,r(o.description),1),_("span",W,r(o.id.slice(0,16)),1)]),_("div",Z,[_("span",null,"类型: "+r(o.type||"-"),1),_("span",null,"已运行: "+r(t.store.formatDuration(Date.now()-o.startedAt)),1),n(v,{size:"small",danger:"",onClick:e=>t.store.stopTask(o.id)},{default:a(()=>[...l[4]||(l[4]=[k("停止",-1)])]),_:1},8,["onClick"])])]))),128))]),_:1})):x("v-if",!0),n(f,{class:"panel-card"},{default:a(()=>[n(A,{columns:t.columns,"data-source":t.store.tasks,pagination:{pageSize:15,size:"small"},loading:t.store.loading,"row-key":"id",size:"small"},{bodyCell:a(({column:o,record:e})=>[o.key==="status"?(i(),S(C,{key:0,color:t.store.getStatusColor(e.status)},{default:a(()=>[k(r(e.status),1)]),_:2},1032,["color"])):o.key==="description"?(i(),c("span",{key:1,title:e.command},r(e.description),9,q)):o.key==="duration"?(i(),c(T,{key:2},[k(r(t.getDuration(e)),1)],64)):o.key==="createdAt"?(i(),c(T,{key:3},[k(r(t.formatTime(e.createdAt)),1)],64)):o.key==="result"?(i(),c(T,{key:4},[e.error?(i(),c("span",G,r(t.truncate(e.error,60)),1)):e.result?(i(),c("span",H,r(t.truncate(String(e.result),60)),1)):(i(),c("span",X,"-"))],64)):o.key==="action"?(i(),c(T,{key:5},[e.status==="running"?(i(),S(v,{key:0,size:"small",danger:"",onClick:g=>t.store.stopTask(e.id)},{default:a(()=>[...l[5]||(l[5]=[k(" 停止 ",-1)])]),_:1},8,["onClick"])):x("v-if",!0)],64)):x("v-if",!0)]),_:1},8,["data-source","loading"])]),_:1})])}const st=E(L,[["render",Y],["__scopeId","data-v-da5ff6a2"],["__file","/tmp/cc-web-panel-uCig8c/repo/packages/web-panel/src/views/Tasks.vue"]]);export{st as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Q as r}from"./index-DCcXU9HN.js";const o=((n,a,e)=>{r(n,`[ant-design-vue: ${a}] ${e}`)});export{o as d};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{C as o}from"./Col-C-60iGia.js";import{a0 as t}from"./index-DCcXU9HN.js";import"./vendor-Bn1JzzAn.js";import"./index-DIikgsI1.js";import"./icons-DG5UD-6K.js";const s=t(o);export{s as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{A as o}from"./Row-DXHx_bk0.js";import{a0 as t}from"./index-DCcXU9HN.js";import"./vendor-Bn1JzzAn.js";import"./responsiveObserve-DexkLtci.js";import"./useFlexGapSupport-BmMStW87.js";import"./styleChecker-DHBjT1Gk.js";import"./index-DIikgsI1.js";import"./icons-DG5UD-6K.js";const l=t(o);export{l as default};
|