chainlesschain 0.162.156 → 0.162.157
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/package.json +2 -2
- package/src/assets/web-panel/.build-hash +1 -1
- package/src/assets/web-panel/assets/{AIOps-DjBXlypQ.js → AIOps-CfMP2Oud.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-Cv9er9bp.js → ActionButton-Zu0N8BQL.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-CLKDjSNs.js → Analytics-DZTwj5T_.js} +3 -3
- package/src/assets/web-panel/assets/AppLayout-CVFJh47v.js +9 -0
- package/src/assets/web-panel/assets/Artifacts-BbN5V7au.js +1 -0
- package/src/assets/web-panel/assets/Artifacts-CRkepl4t.css +1 -0
- package/src/assets/web-panel/assets/{Audit-CXafD178.js → Audit-BMfiLj7T.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-CP5c-GSd.js → BackgroundAgents-BslPCdGF.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-BbYLQfyt.js → Backup-CQ_fMC1r.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-Bqe0MwZL.js → BaseInput-CsFsARiC.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-jNA_yUPH.js → Chat-CwfBobco.js} +6 -6
- package/src/assets/web-panel/assets/{ChatBubbleRenderer-BOFLF01s.js → ChatBubbleRenderer-K6Nf3xeN.js} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-Dlzz-zD1.js → Checkbox-DkSyjjPp.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-BAsDQjGf.js → Codegen-B7Fx3zZ6.js} +1 -1
- package/src/assets/web-panel/assets/{Col-Ju0HrAuS.js → Col-Dzfqn8Ep.js} +1 -1
- package/src/assets/web-panel/assets/{Community-DynJd43Z.js → Community-DhHPdzMM.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-CabbZVww.js → Compact-Ct18_8y7.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-DW4BmAoh.js → Compliance-CY64IqBi.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-Bk1S_7X-.js → Cowork-BYSmWlUl.js} +3 -3
- package/src/assets/web-panel/assets/{Cron-By4sh_NM.js → Cron-_4xtP3Ug.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-DdZdbS1C.js → Crosschain-B4qY-Ycr.js} +1 -1
- package/src/assets/web-panel/assets/{DID-CkL-sQyS.js → DID-CkCzWkx1.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-g_mOpumg.js → Dashboard-C1scT7Ke.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-DtHyE7Ao.js → Dropdown-DBnQ2EWd.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-Kpvov5Wr.js → EmailListRenderer-C9JhOTq0.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-C4kZoePR.js → FamilyGuardDashboard-CWXv5RUv.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-BAwWoK2N.js → Federation-fYdcbz9W.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-DeI0i5f8.js → FormItemContext-CJqOT3Yj.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-CkcKRtos.js → GenericCardRenderer-DGCsHc5K.js} +1 -1
- package/src/assets/web-panel/assets/{Git-kX6jjI9y.js → Git-EH2K-H0Q.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-BXJCBm6x.js → Governance-DJn1X2pR.js} +1 -1
- package/src/assets/web-panel/assets/Inference-Dch1E8qd.js +1 -0
- package/src/assets/web-panel/assets/{KnowledgeGraph-3Dnuf1Wh.js → KnowledgeGraph-QIur8j8-.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-lVAZCtUB.js → Logs-DUgHldPg.js} +2 -2
- package/src/assets/web-panel/assets/Marketplace-DafrSfvd.js +1 -0
- package/src/assets/web-panel/assets/{McpTools-CqjzefRU.js → McpTools-D2xRbfJx.js} +3 -3
- package/src/assets/web-panel/assets/{Memory-BFiPAxk6.js → Memory-C6RbVHAo.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-D0O43VwF.js → MobileBridge-BPtVBKqn.js} +1 -1
- package/src/assets/web-panel/assets/{MobileProjects-B3now48t.js → MobileProjects-Cuw832cr.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-DybhtaCS.js → Mtc-D6O9fWFa.js} +4 -4
- package/src/assets/web-panel/assets/{MtcAudit-D7MmY4F0.js → MtcAudit-CWZcXIH1.js} +5 -5
- package/src/assets/web-panel/assets/{Multisig-wZvGJnB8.js → Multisig-DhIBxTFd.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-BNPpgfvn.js → NLProgramming-wkBFS33e.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-B6FS3KBj.js → Notes-B09FxncA.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-CK0yla9U.js → NotificationSettings-oQwtH6-9.js} +1 -1
- package/src/assets/web-panel/assets/OrderTableRenderer-iFKeNf6Y.js +1 -0
- package/src/assets/web-panel/assets/{Organization-geqgwN1T.js → Organization-CsF-NIjz.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-BWJYZFbC.js → Overflow-bLxv9Dqi.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-DnU1505F.js → P2P-DVwQtm4q.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-BGY74KnC.js → PdhVaultBrowser-Bgic3QKm.js} +4 -4
- package/src/assets/web-panel/assets/{Permissions-CgArrWtQ.js → Permissions-as80-9ep.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-C2vYE61a.js → PersonalDataHub-BGmUw36a.js} +2 -2
- package/src/assets/web-panel/assets/{Pipeline-CBYLI4yW.js → Pipeline-BM96zBxG.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-B-PdW9aN.js → Privacy-BBOzBSWe.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-CuWQegbV.js → ProjectInit-GHX41V28.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-4d32m_cS.js → ProjectSettings-DraqzxKD.js} +2 -2
- package/src/assets/web-panel/assets/{Projects-VLA7ttwd.js → Projects-BzzdUml4.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-B_Izb_oa.js → Providers-CSeYNAtW.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-C6B_ndXV.js → QrScannerModal-DlzBCdXh.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-C6tavL-y.js → QuickAsk-p8iB7od_.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-CF-LaZ6x.js → Recommend-DjOVXacd.js} +1 -1
- package/src/assets/web-panel/assets/{RemoteSession-DBqTTQ9_.js → RemoteSession-CIGk7gk-.js} +2 -2
- package/src/assets/web-panel/assets/Reputation-CjT3M0Di.js +1 -0
- package/src/assets/web-panel/assets/{Row-DO0fd48A.js → Row-tw8m6T0c.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-BV5LDzFR.js → RssFeed-B47KBx_f.js} +2 -2
- package/src/assets/web-panel/assets/Search-D2sx1PBe.js +1 -0
- package/src/assets/web-panel/assets/{Security-DwSrWRCw.js → Security-JmtL8g7D.js} +4 -4
- package/src/assets/web-panel/assets/{Services-BEf1QyM4.js → Services-BxrNqjin.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-LZXTpovy.js → Skeleton-udk8L18t.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-SKgc0Zug.js → Skills-DooLT9of.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-C_QVOtkN.js → Sla-ITVZE1xI.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-v5TW2V-X.js → SpeechSettings-DCkfqY1n.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-CQPjHdqU.js → SyncSettings-CkNlgFjM.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-DCd-uYcI.js → Tasks-BMAoyCM_.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-62VDIjtj.js → Templates-BnrFTlrz.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-BnFQ0pNy.js → Tenant-BjNsy3-i.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-D3v0MGSj.js → Terminal-C0gxLL7V.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-BI1Ka-cu.js → TimelineRenderer-CUtj_KHA.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-BwX1jXYP.js → Tokens-DOg61zlq.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-CSA8TqNx.js → Trigger-D4ldCewj.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-Bn3IjCx7.js → Trust-3lk_Zd8j.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-pUbOAqNi.js → UkeySign-kWhFR6Li.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-Db2RercF.js → VideoEditing-D3GOFVWg.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-CpR1BVAl.js → Wallet-DzrZfBuh.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-Yxtkn7Zp.js → WebAuthn-CyVJVp_g.js} +4 -4
- package/src/assets/web-panel/assets/{WorkflowEditor-CYLe9a2E.js → WorkflowEditor-i_b0wi9b.js} +1 -1
- package/src/assets/web-panel/assets/{chat-gsOGdak0.js → chat-DwPCK8I7.js} +1 -1
- package/src/assets/web-panel/assets/{colors-D9fN299a.js → colors-D0vaVqZU.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-vkd7s-ay.js → compact-item-Don7nGW2.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-C7YkbMyy.js → createContext-D84R5qy2.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-BBwWehQ7.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-ig7reRSU.js → hasIn-BeUqVVKU.js} +1 -1
- package/src/assets/web-panel/assets/{icons-DEmcnxBf.js → icons-DG5UD-6K.js} +4 -4
- package/src/assets/web-panel/assets/{index-Bt-9ZhIu.js → index-4MkfPLGv.js} +1 -1
- package/src/assets/web-panel/assets/{index-B7QRpKif.js → index-7QUwcGTg.js} +1 -1
- package/src/assets/web-panel/assets/{index-D2yhtk6a.js → index-B57al0Z5.js} +1 -1
- package/src/assets/web-panel/assets/{index-BpGlLbRv.js → index-BER98o4P.js} +1 -1
- package/src/assets/web-panel/assets/{index-DFM1oNe1.js → index-BNpJf-sf.js} +1 -1
- package/src/assets/web-panel/assets/{index-BYe9HRSt.js → index-BZ1N07Sp.js} +1 -1
- package/src/assets/web-panel/assets/{index-CspGymmg.js → index-BlfTf0ka.js} +1 -1
- package/src/assets/web-panel/assets/{index-W52sHRdr.js → index-BohrJpBf.js} +1 -1
- package/src/assets/web-panel/assets/{index-C7AY39sg.js → index-Br3SOdER.js} +1 -1
- package/src/assets/web-panel/assets/{index-Co2NYyew.js → index-C0_sKVi7.js} +1 -1
- package/src/assets/web-panel/assets/{index-DQ8U7kzC.js → index-CAdCTTBC.js} +1 -1
- package/src/assets/web-panel/assets/{index-bVbgYBhv.js → index-CExWtm98.js} +1 -1
- package/src/assets/web-panel/assets/{index-CAkz1f1r.js → index-CL71rIwo.js} +1 -1
- package/src/assets/web-panel/assets/{index-CGzGe5tv.js → index-CfYRv-zA.js} +1 -1
- package/src/assets/web-panel/assets/{index-DFfxF7Vt.js → index-CnnxzIx0.js} +1 -1
- package/src/assets/web-panel/assets/{index-C8HZMygt.js → index-CrnVEEQO.js} +1 -1
- package/src/assets/web-panel/assets/{index-FzGr6CVk.js → index-CzT56x-_.js} +1 -1
- package/src/assets/web-panel/assets/{index-DuwbKHoS.js → index-D4b5XqIy.js} +1 -1
- package/src/assets/web-panel/assets/{index-BHHN_KTS.js → index-D84BnuFg.js} +1 -1
- package/src/assets/web-panel/assets/{index-9TxdMYju.js → index-D8r7WKk-.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dy_TKZ9h.js → index-DA0-EJKx.js} +1 -1
- package/src/assets/web-panel/assets/{index-BhftELHI.js → index-DBzBLX-K.js} +3 -3
- package/src/assets/web-panel/assets/{index-BkP17Z95.js → index-DFFzwrNs.js} +1 -1
- package/src/assets/web-panel/assets/index-DJ8etkBT.js +1 -0
- package/src/assets/web-panel/assets/{index-DPguq3X7.js → index-DMT8n9vB.js} +4 -4
- package/src/assets/web-panel/assets/{index-BfpVcXKa.js → index-DQor_7NF.js} +1 -1
- package/src/assets/web-panel/assets/{index-DvCJXmrx.js → index-DT40zd7K.js} +1 -1
- package/src/assets/web-panel/assets/{index-BvDEukXe.js → index-De85D9Pc.js} +1 -1
- package/src/assets/web-panel/assets/{index-PkH39qsp.js → index-IGGttsCv.js} +1 -1
- package/src/assets/web-panel/assets/{index-BMw48d19.js → index-L73NrmlW.js} +1 -1
- package/src/assets/web-panel/assets/{index-CDWTycrg.js → index-LMo9bBLJ.js} +1 -1
- package/src/assets/web-panel/assets/{index-nX8YE6cj.js → index-MKZrJrP_.js} +1 -1
- package/src/assets/web-panel/assets/index-OeaK-zXZ.js +1 -0
- package/src/assets/web-panel/assets/{index-SDrcQXO1.js → index-WRw1pM5E.js} +1 -1
- package/src/assets/web-panel/assets/{index-DZAxCnjS.js → index-YKLCotoo.js} +1 -1
- package/src/assets/web-panel/assets/{index-gj8kxcAi.js → index-hjgrIX5I.js} +1 -1
- package/src/assets/web-panel/assets/{index-DhdXbsXX.js → index-m9bn0F1p.js} +1 -1
- package/src/assets/web-panel/assets/{index-D6s_kbjt.js → index-wesQQ2cH.js} +1 -1
- package/src/assets/web-panel/assets/{index-gpurplyq.js → index-x7VYlV41.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-BrgfVRg9.js → initDefaultProps-DGeU4vPS.js} +1 -1
- package/src/assets/web-panel/assets/{motion-D_3xmwac.js → motion-Dgqj9ab3.js} +1 -1
- package/src/assets/web-panel/assets/{move-DDDJdlxw.js → move-BFyEU6Lr.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-BK2uEWwn.js → mtc-parser-CueCXXPC.js} +1 -1
- package/src/assets/web-panel/assets/{omit-BPHKbDcf.js → omit-D2pU5OyE.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-LNnTscuz.js → pickAttrs-CKTf6zD6.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-CvmTZll5.js → placementArrow-DieJaGCN.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-eBj7qi2J.js → responsiveObserve-Bxr-rmU6.js} +1 -1
- package/src/assets/web-panel/assets/{slide-D68hHkrM.js → slide-CDEDk3Se.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-daTlaeo0.js → statusUtils-icf2eCTx.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-DtyKMtHB.js → styleChecker-qKvgmBhE.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-ekFwFs9h.js → useFlexGapSupport-1_UhiyJZ.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-jRaSEoF4.js → useFs-CFGLXDWh.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-DD5nGzjA.js → usePersonalDataHub-UafOXvQ6.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-KcgLUiom.js → vnode-BfPqSx79.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-Cyk2PQ-s.js → zoom-CXsVcRB6.js} +1 -1
- package/src/assets/web-panel/index.html +2 -2
- package/src/command-manifest.json +8 -1
- package/src/commands/agent.js +45 -4
- package/src/commands/artifacts.js +161 -0
- package/src/commands/browse.js +204 -2
- package/src/data/changelog.json +8 -2
- package/src/gateways/ws/artifact-protocol.js +219 -0
- package/src/gateways/ws/message-dispatcher.js +6 -0
- package/src/gateways/ws/ws-server.js +32 -0
- package/src/index.js +6 -0
- package/src/lib/accessibility.js +55 -0
- package/src/lib/artifact-store.js +236 -0
- package/src/lib/chrome-connector.js +314 -0
- package/src/lib/hook-runner.cjs +47 -7
- package/src/lib/ide-context.js +84 -0
- package/src/lib/permission-rules.cjs +26 -3
- package/src/lib/plugin-runtime/scopes.js +12 -0
- package/src/lib/safe-mode.js +40 -0
- package/src/lib/shell-selector.cjs +203 -0
- package/src/lib/skill-loader.js +19 -0
- package/src/lib/slash-dispatch.js +34 -0
- package/src/repl/agent-repl.js +99 -58
- package/src/runtime/agent-core.js +93 -8
- package/src/runtime/coding-agent-contract-shared.cjs +52 -0
- package/src/runtime/coding-agent-policy.cjs +15 -0
- package/src/runtime/headless-stream.js +51 -1
- package/src/runtime/policies/agent-policy.js +1 -0
- package/src/assets/web-panel/assets/AppLayout-CfyZNzmJ.js +0 -9
- package/src/assets/web-panel/assets/Inference-ujD2JSKo.js +0 -1
- package/src/assets/web-panel/assets/Marketplace-qnzNPm-A.js +0 -1
- package/src/assets/web-panel/assets/OrderTableRenderer-CXfPHIpy.js +0 -1
- package/src/assets/web-panel/assets/Reputation-B01FALUi.js +0 -1
- package/src/assets/web-panel/assets/Search-CTti4_MP.js +0 -1
- package/src/assets/web-panel/assets/devWarning-DEcR2h6k.js +0 -1
- package/src/assets/web-panel/assets/index-BEibanjg.js +0 -1
- package/src/assets/web-panel/assets/index-z_25tU3p.js +0 -1
|
@@ -238,6 +238,12 @@ const CODING_AGENT_TOOL_CONTRACTS = Object.freeze([
|
|
|
238
238
|
description:
|
|
239
239
|
"Foreground (synchronous) timeout in milliseconds. Default 60000, max 600000. Ignored when run_in_background is true.",
|
|
240
240
|
},
|
|
241
|
+
shell: {
|
|
242
|
+
type: "string",
|
|
243
|
+
enum: ["default", "cmd", "powershell", "pwsh"],
|
|
244
|
+
description:
|
|
245
|
+
"Shell to run the command with (optional). default = the platform shell (cmd.exe on Windows, /bin/sh elsewhere) or the configured settings shell.windowsDefault. Use powershell (Windows PowerShell 5.1) or pwsh (PowerShell 7+) when the command uses PowerShell syntax: cmdlets, object pipelines, $variables.",
|
|
246
|
+
},
|
|
241
247
|
},
|
|
242
248
|
required: ["command"],
|
|
243
249
|
},
|
|
@@ -953,6 +959,52 @@ const CODING_AGENT_TOOL_CONTRACTS = Object.freeze([
|
|
|
953
959
|
tags: ["tool:schedule", "contract:coding-agent", "tier:extension"],
|
|
954
960
|
},
|
|
955
961
|
},
|
|
962
|
+
{
|
|
963
|
+
name: "publish_artifact",
|
|
964
|
+
title: "Publish Artifact",
|
|
965
|
+
kind: "artifact",
|
|
966
|
+
tier: "extension",
|
|
967
|
+
description:
|
|
968
|
+
"Publish a finished deliverable file (Markdown report, patch, screenshot, test log, findings JSON) as a durable artifact the user can find later with `cc artifacts`. The file is copied into the user's artifact store with metadata; only the metadata enters the conversation. Use at the END of a task for its key outputs — not for intermediate scratch files.",
|
|
969
|
+
inputSchema: {
|
|
970
|
+
type: "object",
|
|
971
|
+
properties: {
|
|
972
|
+
path: {
|
|
973
|
+
type: "string",
|
|
974
|
+
description:
|
|
975
|
+
"Path of the file to publish (relative to cwd or absolute)",
|
|
976
|
+
},
|
|
977
|
+
title: {
|
|
978
|
+
type: "string",
|
|
979
|
+
description: "Human title for the artifact (default: the file name)",
|
|
980
|
+
},
|
|
981
|
+
kind: {
|
|
982
|
+
type: "string",
|
|
983
|
+
enum: ["report", "patch", "screenshot", "log", "data", "other"],
|
|
984
|
+
description: "What kind of deliverable this is (default: other)",
|
|
985
|
+
},
|
|
986
|
+
ttl_days: {
|
|
987
|
+
type: "number",
|
|
988
|
+
description:
|
|
989
|
+
"Days to retain before `cc artifacts clean` may remove it (default 30)",
|
|
990
|
+
},
|
|
991
|
+
},
|
|
992
|
+
required: ["path"],
|
|
993
|
+
},
|
|
994
|
+
...TOOL_POLICY_METADATA.publish_artifact,
|
|
995
|
+
permissions: {
|
|
996
|
+
level: "standard",
|
|
997
|
+
scopes: ["filesystem:read", "artifact:write"],
|
|
998
|
+
},
|
|
999
|
+
telemetry: {
|
|
1000
|
+
category: "artifact",
|
|
1001
|
+
tags: [
|
|
1002
|
+
"tool:publish_artifact",
|
|
1003
|
+
"contract:coding-agent",
|
|
1004
|
+
"tier:extension",
|
|
1005
|
+
],
|
|
1006
|
+
},
|
|
1007
|
+
},
|
|
956
1008
|
]);
|
|
957
1009
|
|
|
958
1010
|
const CODING_AGENT_MVP_TOOL_NAMES = Object.freeze(
|
|
@@ -289,6 +289,21 @@ const TOOL_POLICY_METADATA = Object.freeze({
|
|
|
289
289
|
approvalFlow: "auto",
|
|
290
290
|
isReadOnly: false,
|
|
291
291
|
},
|
|
292
|
+
// Copies a finished deliverable (report/patch/screenshot/log) into the
|
|
293
|
+
// user's own ~/.chainlesschain/artifacts store with metadata. Reads a
|
|
294
|
+
// workspace file, writes only under the user's config dir — no third-party
|
|
295
|
+
// egress. Blocked in plan mode (publishing is a side effect of DONE work,
|
|
296
|
+
// not analysis).
|
|
297
|
+
publish_artifact: {
|
|
298
|
+
riskLevel: RISK_LEVELS.LOW,
|
|
299
|
+
category: TOOL_CATEGORIES.WRITE,
|
|
300
|
+
availableInPlanMode: false,
|
|
301
|
+
planModeBehavior: "blocked",
|
|
302
|
+
requiresPlanApproval: false,
|
|
303
|
+
requiresConfirmation: false,
|
|
304
|
+
approvalFlow: "auto",
|
|
305
|
+
isReadOnly: false,
|
|
306
|
+
},
|
|
292
307
|
});
|
|
293
308
|
|
|
294
309
|
function normalizeGitCommand(command) {
|
|
@@ -181,6 +181,47 @@ export function planSnapshot(pm) {
|
|
|
181
181
|
}
|
|
182
182
|
return { active: pm.isActive(), state: pm.state || null, items, risk };
|
|
183
183
|
}
|
|
184
|
+
|
|
185
|
+
const MAX_PLAN_REVIEW_SNAPSHOT_CHARS = 24000;
|
|
186
|
+
|
|
187
|
+
function planReviewFromInput(obj) {
|
|
188
|
+
const review =
|
|
189
|
+
obj && obj.review && typeof obj.review === "object" ? obj.review : null;
|
|
190
|
+
const snapshot =
|
|
191
|
+
typeof obj?.snapshot === "string"
|
|
192
|
+
? obj.snapshot
|
|
193
|
+
: typeof review?.snapshot === "string"
|
|
194
|
+
? review.snapshot
|
|
195
|
+
: "";
|
|
196
|
+
if (!snapshot.trim()) return null;
|
|
197
|
+
const text =
|
|
198
|
+
snapshot.length > MAX_PLAN_REVIEW_SNAPSHOT_CHARS
|
|
199
|
+
? snapshot.slice(0, MAX_PLAN_REVIEW_SNAPSHOT_CHARS) +
|
|
200
|
+
`\n\n[review snapshot truncated: ${snapshot.length - MAX_PLAN_REVIEW_SNAPSHOT_CHARS} chars omitted]`
|
|
201
|
+
: snapshot;
|
|
202
|
+
return {
|
|
203
|
+
action: String(review?.action || obj.action || "").toLowerCase(),
|
|
204
|
+
reviewedAt:
|
|
205
|
+
typeof review?.reviewedAt === "string" ? review.reviewedAt : null,
|
|
206
|
+
conversationId:
|
|
207
|
+
typeof review?.conversationId === "string" ? review.conversationId : null,
|
|
208
|
+
snapshot: text,
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
function planReviewSystemMessage(review) {
|
|
213
|
+
if (!review?.snapshot) return null;
|
|
214
|
+
const meta = [
|
|
215
|
+
review.action ? `action=${review.action}` : null,
|
|
216
|
+
review.reviewedAt ? `reviewedAt=${review.reviewedAt}` : null,
|
|
217
|
+
review.conversationId ? `conversationId=${review.conversationId}` : null,
|
|
218
|
+
]
|
|
219
|
+
.filter(Boolean)
|
|
220
|
+
.join(" ");
|
|
221
|
+
return (
|
|
222
|
+
"[PLAN REVIEW SNAPSHOT]" + (meta ? ` ${meta}` : "") + "\n" + review.snapshot
|
|
223
|
+
);
|
|
224
|
+
}
|
|
184
225
|
import { withQuietStdout } from "./quiet-stdout.js";
|
|
185
226
|
|
|
186
227
|
/**
|
|
@@ -199,7 +240,9 @@ export function parseInputEvent(line) {
|
|
|
199
240
|
// {"type":"plan","action":"enter"|"approve"|"reject"}
|
|
200
241
|
if (obj && typeof obj === "object" && obj.type === "plan") {
|
|
201
242
|
const action = String(obj.action || "").toLowerCase();
|
|
202
|
-
|
|
243
|
+
if (!action) return null;
|
|
244
|
+
const planReview = planReviewFromInput(obj);
|
|
245
|
+
return planReview ? { plan: action, planReview } : { plan: action };
|
|
203
246
|
}
|
|
204
247
|
// Turn interrupt (panel Stop / Claude-Code Esc parity): aborts the
|
|
205
248
|
// in-flight turn without ending the conversation. {"type":"interrupt"}
|
|
@@ -1304,6 +1347,13 @@ export async function runAgentHeadlessStream(options = {}, deps = {}) {
|
|
|
1304
1347
|
// exits plan mode. Every control answers with a `plan_update` event.
|
|
1305
1348
|
if (parsed.plan) {
|
|
1306
1349
|
const pm = getPlanModeManager();
|
|
1350
|
+
const reviewMessage =
|
|
1351
|
+
parsed.plan === "approve" || parsed.plan === "reject"
|
|
1352
|
+
? planReviewSystemMessage(parsed.planReview)
|
|
1353
|
+
: null;
|
|
1354
|
+
if (reviewMessage) {
|
|
1355
|
+
messages.push({ role: "system", content: reviewMessage });
|
|
1356
|
+
}
|
|
1307
1357
|
if (parsed.plan === "enter") {
|
|
1308
1358
|
if (!pm.isActive()) {
|
|
1309
1359
|
pm.enterPlanMode({ title: "Agent Plan" });
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import{b as v,r as P,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 as I,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-DPguq3X7.js";import{u as N}from"./useShellMode-CgR0wCYM.js";import{R as _e,B as de,M as ue,U as Oe,D as he,S as be,h as we,i as ve,j as Le,N as Se,k as Ce,F as Ee,l as Te,m as Ae,A as Be,P as Me,n as Re,o as Pe,p as je,q as De,r as Ue,s as Ne,t as Ie,u as Ke,v as Fe,w as Ve,x as We,V as ze,K as Ge,y as He,z as qe,G as Je,H as Ye,J as Ze,W as Qe,O 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,e as ut,a6 as ct,a7 as yt,a8 as pt,a9 as ft,aa as mt,ab as kt,ac as gt}from"./icons-DEmcnxBf.js";import le from"./index-PkH39qsp.js";import"./KeyCode-D63Tfrq7.js";import"./omit-BPHKbDcf.js";import"./pickAttrs-LNnTscuz.js";import"./initDefaultProps-BrgfVRg9.js";import"./motion-D_3xmwac.js";import"./raf-Deuc0E8-.js";import"./index-BpGlLbRv.js";import"./index-D2yhtk6a.js";import"./isVisible-C7tPsqfj.js";import"./useState-CnxtbLoC.js";import"./devWarning-DEcR2h6k.js";import"./compact-item-vkd7s-ay.js";import"./createContext-C7YkbMyy.js";import"./Compact-CabbZVww.js";import"./_getTag-DnrRH4E6.js";import"./styleChecker-DtyKMtHB.js";import"./zoom-Cyk2PQ-s.js";import"./ActionButton-Cv9er9bp.js";import"./vnode-KcgLUiom.js";const _t=""+new URL("logo-DBCYUiWP.png",import.meta.url).href,T={notifications:P([]),unreadCount:P(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 c({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:c,refreshUnreadCount:S,markRead:n,markAllRead:g,sendDesktop:h}}const Ot={__name:"NotificationBell",setup(i,{expose:c}){c();const S=P(!1),n=P("all"),g=P(!1),{notifications:h,unreadCount:o,refresh:s,markRead:f,markAllRead:_}=re();function O(){j()}z(()=>{window.addEventListener("cc:open-notification-drawer",O)}),$(()=>{window.removeEventListener("cc:open-notification-drawer",O)});const M=v(()=>n.value==="unread"?h.value.filter(u=>!u.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 j(){S.value=!0,await C()}async function D(u){if(!u.is_read)try{await f(u.id)}catch{}}async function r(){try{await _()}catch(u){console.warn("[NotificationBell] markAllRead failed:",u?.message||u)}}function w(u){if(!u)return"";const b=typeof u=="string"?Date.parse(u):Number(u);if(!Number.isFinite(b))return String(u);const R=Date.now()-b,U=6e4,K=60*U,F=24*K;return R<U?"刚刚":R<K?`${Math.floor(R/U)} 分钟前`:R<F?`${Math.floor(R/K)} 小时前`: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:j,onItemClick:D,onMarkAllRead:r,formatTime:w,ref:P,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}},ht={class:"notif-toolbar"},bt={class:"notif-body"},wt={key:2,class:"notif-list"},vt=["onClick"],Lt={class:"notif-row"},St={class:"notif-title"},Ct={class:"notif-time"},Et={key:0,class:"notif-message"};function Tt(i,c,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"),j=k("a-spin"),D=k("a-drawer");return p(),L(I,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(D,{open:n.visible,"onUpdate:open":c[1]||(c[1]=r=>n.visible=r),title:"通知中心",placement:"right",width:400,"body-style":{padding:0}},{default:t(()=>[d("div",ht,[e(O,null,{default:t(()=>[e(_,{value:n.filter,"onUpdate:value":c[0]||(c[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(()=>[...c[2]||(c[2]=[l(" 全部已读 ",-1)])]),_:1},8,["disabled"])]),_:1})]),d("div",bt,[!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(j,{key:1,style:{display:"block",padding:"60px"}})):(p(),L("ul",wt,[(p(!0),L(I,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",Lt,[d("div",St,a(r.title||r.message||"(无标题)"),1),d("span",Ct,a(n.formatTime(r.created_at)),1)]),r.message&&r.title?(p(),L("div",Et,a(r.message),1)):m("v-if",!0)],10,vt))),128))]))])]),_:1},8,["open"])],64)}const At=Z(Ot,[["render",Tt],["__scopeId","data-v-8c1554dd"],["__file","/tmp/cc-web-panel-1Koio1/repo/packages/web-panel/src/components/NotificationBell.vue"]]),Bt={__name:"MobileBridgeHeaderStatus",setup(i,{expose:c}){c();function S(r){if(!r)return[];try{return JSON.parse(r)}catch{}const w=String(r).split(`
|
|
2
|
-
`),A=w.findIndex(u=>{const b=u.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 u=w.length-1;u>=A;u--){const b=w[u].trim();if(/^[\]\}]/.test(b)&&!/^[\]\}][A-Za-z]/.test(b))try{return JSON.parse(w.slice(A,u+1).join(`
|
|
3
|
-
`))}catch{return[]}}return[]}const n=J(),g=H(),h=P([]);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 j(){n.push("/mobile-bridge")}z(()=>{C(),o=setInterval(C,5e3)}),ee(()=>{o&&(clearInterval(o),o=null)});const D={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:j,ref:P,computed:v,onMounted:z,onBeforeUnmount:ee,get useRouter(){return J},get MobileOutlined(){return ue},get useWsStore(){return H}};return Object.defineProperty(D,"__isScriptSetup",{enumerable:!1,value:!0}),D}},Mt={key:0,class:"mbh-count"};function Rt(i,c,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",Mt,a(n.totalCount),1)):m("v-if",!0)],2)]),_:1},8,["count"])]),_:1},8,["title"])}const Pt=Z(Bt,[["render",Rt],["__scopeId","data-v-e8ef01d6"],["__file","/tmp/cc-web-panel-1Koio1/repo/packages/web-panel/src/components/MobileBridgeHeaderStatus.vue"]]),Y="cc.web-panel.sidebar.openKeys",jt={__name:"AppLayout",setup(i,{expose:c}){c();const S=J(),n=te(),g=H(),h=oe(),{t:o}=ie(),s=N(),f=P(!1),_=window.__CC_CONFIG__||{},O=v(()=>_.mode==="project"),M="v5.0.3.134",C=v(()=>h.current),j=v(()=>h.config.vars["--menu-mode"]),D=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=P(w());ne(A,y=>{try{localStorage.setItem(Y,JSON.stringify(y))}catch{}},{deep:!0});const u=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:K,supported:F,setLocale:Q}=ae();function ce(){const y=F[(F.indexOf(K.value)+1)%F.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:j,selectedKeys:D,ALL_GROUP_KEYS:r,OPEN_KEYS_LS:Y,loadOpenKeys:w,openKeys:A,wsStatus:u,statusBadge:b,statusText:R,setTheme:U,locale:K,SUPPORTED_LOCALES:F,setLocale:Q,toggleLocale:ce,openDesktopWindow:X,switchToDesktopShell:ye,onMenuClick:pe,ref:P,computed:v,onMounted:z,watch:ne,get useRouter(){return J},get useRoute(){return te},get DashboardOutlined(){return gt},get MessageOutlined(){return kt},get RocketOutlined(){return mt},get AppstoreOutlined(){return ft},get ApiOutlined(){return pt},get FolderOutlined(){return yt},get GlobalOutlined(){return ct},get InfoCircleOutlined(){return ut},get ControlOutlined(){return dt},get FileTextOutlined(){return st},get CloudServerOutlined(){return rt},get BookOutlined(){return lt},get BranchesOutlined(){return at},get ClockCircleOutlined(){return it},get ThunderboltOutlined(){return ot},get ApartmentOutlined(){return nt},get SafetyCertificateOutlined(){return tt},get LockOutlined(){return et},get WifiOutlined(){return $e},get CodeOutlined(){return xe},get ProjectOutlined(){return Xe},get WalletOutlined(){return Qe},get TeamOutlined(){return Ze},get BarChartOutlined(){return Ye},get BlockOutlined(){return Je},get CloudUploadOutlined(){return qe},get ReadOutlined(){return He},get KeyOutlined(){return Ge},get VideoCameraOutlined(){return ze},get ShareAltOutlined(){return We},get IdcardOutlined(){return Ve},get UsergroupAddOutlined(){return Fe},get ShoppingOutlined(){return Ke},get SwapOutlined(){return Ie},get AlertOutlined(){return Ne},get SafetyOutlined(){return Ue},get ExperimentOutlined(){return De},get DeploymentUnitOutlined(){return je},get BulbOutlined(){return Pe},get BankOutlined(){return Re},get PartitionOutlined(){return Me},get AuditOutlined(){return Be},get FileSearchOutlined(){return Ae},get TrophyOutlined(){return Te},get FireOutlined(){return Ee},get SearchOutlined(){return Ce},get NumberOutlined(){return Se},get ClusterOutlined(){return Le},get SoundOutlined(){return ve},get DesktopOutlined(){return we},get BellOutlined(){return de},get SyncOutlined(){return be},get MobileOutlined(){return ue},get DatabaseOutlined(){return he},get UnorderedListOutlined(){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 _t},get useShellMode(){return N},get useI18n(){return ie},get useLocale(){return ae},NotificationBell:At,MobileBridgeHeaderStatus:Pt};return Object.defineProperty(x,"__isScriptSetup",{enumerable:!1,value:!0}),x}},Dt=["src"],Ut={key:0,class:"logo-text"},Nt={key:0,class:"mode-banner project"},It={class:"banner-info"},Kt={class:"banner-name"},Ft={class:"banner-sub"},Vt={key:1,class:"mode-banner global"},Wt={class:"banner-name"},zt=["title"],Gt={class:"group-label"},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={key:0,class:"footer-text"},en={class:"header-left"},tn={class:"header-right"},nn={class:"theme-switcher"},on=["data-theme-key","onClick"],an=["data-locale"],ln={class:"lang-switch-label"},rn={class:"version-tag"};function sn(i,c,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"),j=k("a-tag"),D=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":c[2]||(c[2]=u=>n.collapsed=u),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,Dt),n.collapsed?m("v-if",!0):(p(),L("span",Ut,"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,zt)):(p(),L(I,{key:0},[n.isProject?(p(),L("div",Nt,[e(n.FolderOutlined,{class:"banner-icon"}),d("div",It,[d("div",Kt,a(n.cfg.projectName||i.$t("appLayout.scope.fallbackProject")),1),d("div",Ft,a(i.$t("appLayout.scope.projectPanel")),1)])])):(p(),L("div",Vt,[e(n.GlobalOutlined,{class:"banner-icon"}),d("span",Wt,a(i.$t("appLayout.scope.global")),1)]))],64)),m(" Navigation "),e(_,{selectedKeys:n.selectedKeys,"onUpdate:selectedKeys":c[0]||(c[0]=u=>n.selectedKeys=u),openKeys:n.openKeys,"onUpdate:openKeys":c[1]||(c[1]=u=>n.openKeys=u),theme:n.menuTheme,mode:"inline","inline-collapsed":n.collapsed,class:"side-menu",onClick:n.onMenuClick},{default:t(()=>[n.collapsed?(p(),L(I,{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(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(I,{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(I,{key:0},[e(s,{key:"g-overview"},{title:t(()=>[d("span",Gt,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",Ht,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",qt,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(()=>[c[3]||(c[3]=l("个人数据中台",-1))]),_:1}),e(o,{key:"personal-data-hub/browser"},{icon:t(()=>[e(n.UnorderedListOutlined)]),default:t(()=>[c[4]||(c[4]=l("数据浏览器",-1))]),_:1}),e(o,{key:"family-guard"},{icon:t(()=>[e(n.TeamOutlined)]),default:t(()=>[c[5]||(c[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(()=>[c[6]||(c[6]=l("后台 Agent",-1))]),_:1})]),_:1}),e(s,{key:"g-advanced"},{title:t(()=>[d("span",Jt,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",Yt,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",Zt,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",Qt,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",xt,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",$t,a(n.statusText),1))],2)]),_:1},8,["collapsed"]),m(" ── Main area ───────────────────────────────────────────────── "),e(A,{class:"main-area"},{default:t(()=>[m(" Header "),e(D,{class:"app-header"},{default:t(()=>[d("div",en,[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",tn,[m(" Theme switcher "),d("div",nn,[(p(!0),L(I,null,se(n.THEMES,(u,b)=>(p(),B(C,{key:b,title:u.label},{default:t(()=>[d("button",{class:W(["theme-btn",{active:n.currentTheme===b}]),"data-theme-key":b,onClick:R=>n.setTheme(b)},a(u.icon),11,on)]),_: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",ln,a(i.$t("language.switch")),1)],8,an)]),_: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",rn,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(j,{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",sn],["__scopeId","data-v-6f6437fc"],["__file","/tmp/cc-web-panel-1Koio1/repo/packages/web-panel/src/components/AppLayout.vue"]]);export{Pn as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as b,J as g,U as O,R as d,c as n,K as t,V as f,S,o as ae,a as Z,b as V,r as _,P as c,Q as m,F as h,Z as E,$ as Se}from"./vendor-Bn1JzzAn.js";import{t as X,_ as he,b as oe,u as ie,d as p}from"./index-DPguq3X7.js";import{a0 as Ce,f as Fe,$ as Te,a3 as we,as as Oe,R as Ae}from"./icons-DEmcnxBf.js";const Me=Object.freeze(["online","offline","busy","degraded"]),Ne=Object.freeze(["queued","dispatched","running","complete","failed"]),ze=Object.freeze(["standard","encrypted","federated"]);function F(s,l=0){return typeof s=="number"&&Number.isFinite(s)?s:l}function Ie(s){if(Array.isArray(s))return s.filter(l=>typeof l=="string");if(typeof s=="string")try{const l=JSON.parse(s);if(Array.isArray(l))return l.filter(a=>typeof a=="string")}catch{}return[]}function Le(s,l=0){if(!s||typeof s!="object")return null;const a=s.id||"";return a?{key:a,id:a,nodeId:s.nodeId??s.node_id??"",endpoint:s.endpoint||"",capabilities:Ie(s.capabilities),gpuMemoryMb:F(s.gpuMemoryMb??s.gpu_memory_mb,0),status:String(s.status||"offline").toLowerCase(),lastHeartbeat:s.lastHeartbeat??s.last_heartbeat??null,taskCount:F(s.taskCount??s.task_count,0),createdAt:s.createdAt??s.created_at??null,_idx:l}:null}function re(s){const l=X(s);return Array.isArray(l)?l.map(Le).filter(Boolean):[]}function je(s,l=0){if(!s||typeof s!="object")return null;const a=s.id||"";return a?{key:a,id:a,model:String(s.model||""),input:s.input??"",output:s.output??"",privacyMode:String(s.privacyMode??s.privacy_mode??"standard").toLowerCase(),priority:F(s.priority,5),assignedNode:s.assignedNode??s.assigned_node??null,status:String(s.status||"queued").toLowerCase(),durationMs:s.durationMs??s.duration_ms??null,createdAt:s.createdAt??s.created_at??null,completedAt:s.completedAt??s.completed_at??null,_idx:l}:null}function le(s){const l=X(s);return Array.isArray(l)?l.map(je).filter(Boolean):[]}const Ue={nodes:{total:0,online:0,offline:0,busy:0},tasks:{total:0,queued:0,completed:0,failed:0,avgDurationMs:0}};function se(s){const l=JSON.parse(JSON.stringify(Ue)),a=X(s);return!a||typeof a!="object"||Array.isArray(a)||(a.nodes&&typeof a.nodes=="object"&&(l.nodes.total=F(a.nodes.total,0),l.nodes.online=F(a.nodes.online,0),l.nodes.offline=F(a.nodes.offline,0),l.nodes.busy=F(a.nodes.busy,0)),a.tasks&&typeof a.tasks=="object"&&(l.tasks.total=F(a.tasks.total,0),l.tasks.queued=F(a.tasks.queued,0),l.tasks.completed=F(a.tasks.completed,0),l.tasks.failed=F(a.tasks.failed,0),l.tasks.avgDurationMs=F(a.tasks.avgDurationMs??a.tasks.avg_duration_ms,0))),l}function Re(s){if(s==null||s==="")return"—";const l=typeof s=="number"?new Date(s):new Date(String(s));return isNaN(l.getTime())?String(s):l.toLocaleString("zh-CN",{hour12:!1})}const De={__name:"Inference",setup(s,{expose:l}){l();const{t:a}=oe(),e=ie(),H=_(!1),K=_(!1),T=_(!1),U=_(""),R=_(""),I=_([]),D=_([]),L=_({nodes:{total:0,online:0,offline:0,busy:0},tasks:{total:0,queued:0,completed:0,failed:0,avgDurationMs:0}}),M=_("nodes"),N=_(""),q=_(""),C=_(""),w=_(!1),j=_(!1),k=Z({nodeId:"",endpoint:"",capabilities:"",gpuMemory:null}),v=Z({model:"",input:"",priority:5,mode:"standard"}),J=V(()=>[{title:a("inference.nodeColumns.nodeId"),key:"nodeId"},{title:a("inference.nodeColumns.capabilities"),key:"capabilities",width:"220px"},{title:a("inference.nodeColumns.gpu"),key:"gpu",width:"100px"},{title:a("inference.nodeColumns.status"),key:"status",width:"100px"},{title:a("inference.nodeColumns.taskCount"),key:"taskCount",width:"90px"},{title:a("inference.nodeColumns.lastHeartbeat"),key:"lastHeartbeat",width:"160px"},{title:a("inference.nodeColumns.action"),key:"action",width:"210px"}]),W=V(()=>[{title:a("inference.taskColumns.model"),key:"model"},{title:a("inference.taskColumns.privacyMode"),key:"privacyMode",width:"110px"},{title:a("inference.taskColumns.priority"),key:"priority",width:"80px"},{title:a("inference.taskColumns.assignedNode"),key:"assignedNode",width:"140px"},{title:a("inference.taskColumns.status"),key:"status",width:"110px"},{title:a("inference.taskColumns.duration"),key:"duration",width:"110px"},{title:a("inference.taskColumns.createdAt"),key:"createdAt",width:"160px"},{title:a("inference.taskColumns.action"),key:"action",width:"140px"}]),P=V(()=>N.value?I.value.filter(o=>o.status===N.value):I.value),A=V(()=>{let o=D.value;return q.value&&(o=o.filter(i=>i.status===q.value)),C.value&&(o=o.filter(i=>i.privacyMode===C.value)),o});function B(o){const i=`inference.nodeStatus.${o}`,y=a(i);return y===i?o:y}function Y(o){return{online:"green",offline:"default",busy:"orange",degraded:"red"}[o]||"default"}function G(o){const i=`inference.taskStatus.${o}`,y=a(i);return y===i?o:y}function Q(o){return{queued:"default",dispatched:"processing",running:"cyan",complete:"green",failed:"red"}[o]||"default"}function r(o){const i=`inference.privacy.${o}`,y=a(i);return y===i?o:y}function u(o){return{standard:"default",encrypted:"purple",federated:"cyan"}[o]||"default"}function x(o){return o>=8?"#ff4d4f":o>=5?"#faad14":"#52c41a"}function de(o){const i=I.value.find(y=>y.id===o);return i?i.nodeId:o.slice(0,8)}function ce(o,i){return o?o.length>i?o.slice(0,i)+"...":o:""}function ue(o){return o>=1024?`${(o/1024).toFixed(1)} GB`:`${o} MB`}function fe(o){return o.status==="queued"||o.status==="dispatched"||o.status==="running"}function me(o){return o.status!=="complete"&&o.status!=="failed"}function ye({key:o}){o==="register"?w.value=!0:o==="submit"&&(j.value=!0)}async function z(){H.value=!0;try{const[o,i,y]=await Promise.all([e.execute("inference nodes --limit 200 --json",1e4).catch(()=>({output:""})),e.execute("inference tasks --limit 200 --json",1e4).catch(()=>({output:""})),e.execute("inference stats --json",8e3).catch(()=>({output:""}))]);I.value=re(o.output),D.value=le(i.output),L.value=se(y.output)}catch(o){p.error(a("inference.messages.loadFailed",{err:o?.message||o}))}finally{H.value=!1}}async function ge(){const o=k.nodeId.trim();if(!o){p.warning(a("inference.messages.nodeIdRequired"));return}K.value=!0;try{const i=[`inference register "${o.replace(/"/g,'\\"')}"`];if(k.endpoint.trim()&&i.push(`--endpoint "${k.endpoint.trim().replace(/"/g,'\\"')}"`),k.capabilities.trim()){const ne=k.capabilities.split(/[,\s]+/).filter(Boolean).join(",");ne&&i.push(`--capabilities "${ne}"`)}k.gpuMemory!=null&&i.push(`--gpu ${k.gpuMemory}`),i.push("--json");const{output:y}=await e.execute(i.join(" "),1e4);if(/error|failed|失败/i.test(y)&&!/"nodeId"/.test(y)){p.error(a("inference.messages.registerFailed",{err:y.slice(0,120)}));return}p.success(a("inference.messages.registerOk")),w.value=!1,$(),await z()}catch(i){p.error(a("inference.messages.registerFailed",{err:i?.message||i}))}finally{K.value=!1}}async function pe(){const o=v.model.trim();if(!o){p.warning(a("inference.messages.modelRequired"));return}T.value=!0;try{const i=[`inference submit "${o.replace(/"/g,'\\"')}"`];v.input.trim()&&i.push(`--input "${v.input.trim().replace(/"/g,'\\"')}"`),v.priority!=null&&i.push(`--priority ${v.priority}`),i.push(`--mode ${v.mode}`),i.push("--json");const{output:y}=await e.execute(i.join(" "),12e3);if(/error|failed|失败/i.test(y)&&!/"taskId"/.test(y)){p.error(a("inference.messages.submitFailed",{err:y.slice(0,120)}));return}p.success(a("inference.messages.submitOk")),j.value=!1,ee(),M.value="tasks",await z()}catch(i){p.error(a("inference.messages.submitFailed",{err:i?.message||i}))}finally{T.value=!1}}async function be(o){U.value=o.id;try{const{output:i}=await e.execute(`inference heartbeat ${o.id} --json`,8e3);if(/error/i.test(i)&&!/"updated"/.test(i)){p.error(a("inference.messages.heartbeatFailed",{err:i.slice(0,120)}));return}p.success(a("inference.messages.heartbeatOk")),await z()}catch(i){p.error(a("inference.messages.heartbeatFailed",{err:i?.message||i}))}finally{U.value=""}}async function ke(o,i){if(i!==o.status)try{const{output:y}=await e.execute(`inference node-status ${o.id} ${i} --json`,8e3);if(/error|invalid/i.test(y)&&!/"updated"/.test(y)){p.error(a("inference.messages.statusFailed",{err:y.slice(0,120)}));return}p.success(a("inference.messages.statusOk",{status:B(i)})),await z()}catch(y){p.error(a("inference.messages.statusFailed",{err:y?.message||y}))}}async function _e(o){try{const{output:i}=await e.execute(`inference unregister ${o.id} --json`,8e3);if(/error/i.test(i)&&!/"removed"/.test(i)){p.error(a("inference.messages.unregisterFailed",{err:i.slice(0,120)}));return}p.success(a("inference.messages.unregisterOk")),await z()}catch(i){p.error(a("inference.messages.unregisterFailed",{err:i?.message||i}))}}async function ve(o){R.value=o.id;try{const{output:i}=await e.execute(`inference complete ${o.id} --json`,1e4);if(/error|failed/i.test(i)&&!/"completed"/.test(i)){p.error(a("inference.messages.completeFailed",{err:i.slice(0,120)}));return}p.success(a("inference.messages.completeOk")),await z()}catch(i){p.error(a("inference.messages.completeFailed",{err:i?.message||i}))}finally{R.value=""}}async function xe(o){try{const{output:i}=await e.execute(`inference fail-task ${o.id} --json`,8e3);if(/error/i.test(i)&&!/"failed"/.test(i)){p.error(a("inference.messages.failFailed",{err:i.slice(0,120)}));return}p.success(a("inference.messages.failOk")),await z()}catch(i){p.error(a("inference.messages.failFailed",{err:i?.message||i}))}}function $(){k.nodeId="",k.endpoint="",k.capabilities="",k.gpuMemory=null}function ee(){v.model="",v.input="",v.priority=5,v.mode="standard"}ae(z);const te={t:a,ws:e,loading:H,registering:K,submitting:T,heartbeatId:U,completingId:R,nodes:I,tasks:D,stats:L,activeTab:M,nodeStatusFilter:N,taskStatusFilter:q,taskPrivacyFilter:C,showRegisterModal:w,showSubmitModal:j,registerForm:k,submitForm:v,nodeColumns:J,taskColumns:W,filteredNodes:P,filteredTasks:A,nodeStatusLabel:B,nodeStatusColor:Y,taskStatusLabel:G,taskStatusColor:Q,privacyLabel:r,privacyColor:u,priorityColor:x,nodeShortName:de,truncate:ce,formatGpuMemory:ue,canComplete:fe,canFail:me,handleNewClick:ye,loadAll:z,registerNode:ge,submitTask:pe,sendHeartbeat:be,transitionStatus:ke,unregisterNode:_e,completeTask:ve,failTask:xe,resetRegisterForm:$,resetSubmitForm:ee,ref:_,computed:V,onMounted:ae,reactive:Z,get useI18n(){return oe},get ReloadOutlined(){return Ae},get PlusOutlined(){return Oe},get CloudServerOutlined(){return we},get ThunderboltOutlined(){return Te},get CheckCircleOutlined(){return Fe},get ClockCircleOutlined(){return Ce},get message(){return p},get useWsStore(){return ie},get parseNodes(){return re},get parseTasks(){return le},get parseStats(){return se},get formatInferenceTime(){return Re},get NODE_STATUSES(){return Me},get TASK_STATUSES(){return Ne},get PRIVACY_MODES(){return ze}};return Object.defineProperty(te,"__isScriptSetup",{enumerable:!1,value:!0}),te}},Pe={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ee={class:"page-title"},qe={class:"page-sub"},Be={style:{color:"var(--text-secondary)","font-size":"12px","margin-left":"8px"}},Ve={class:"filter-bar"},He={style:{color:"var(--text-primary)","font-family":"monospace","font-weight":"500"}},Ke={key:0,style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"2px"}},Je={key:1,style:{color:"var(--text-muted)"}},Ye={key:0,style:{color:"var(--text-secondary)","font-family":"monospace"}},Ge={key:1,style:{color:"var(--text-muted)"}},We={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},Qe={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Ze={class:"filter-bar"},Xe={style:{color:"var(--text-primary)","font-family":"monospace","font-weight":"500"}},$e={key:0,style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"2px"}},et={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"11px"}},tt={key:1,style:{color:"var(--text-muted)"}},nt={key:0,style:{"font-family":"monospace",color:"var(--text-secondary)","font-size":"12px"}},at={key:1,style:{color:"var(--text-muted)"}},ot={key:6,style:{color:"var(--text-secondary)","font-size":"11px"}},it={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}};function rt(s,l,a,e,H,K){const T=b("a-button"),U=b("a-menu-item"),R=b("a-menu"),I=b("a-dropdown"),D=b("a-space"),L=b("a-statistic"),M=b("a-card"),N=b("a-col"),q=b("a-row"),C=b("a-tag"),w=b("a-radio-button"),j=b("a-radio-group"),k=b("a-popconfirm"),v=b("a-table"),J=b("a-tab-pane"),W=b("a-tabs"),P=b("a-input"),A=b("a-form-item"),B=b("a-input-number"),Y=b("a-form"),G=b("a-modal"),Q=b("a-textarea");return c(),g("div",null,[O("div",Pe,[O("div",null,[O("h2",Ee,d(e.t("inference.title")),1),O("p",qe,d(e.t("inference.subtitle")),1)]),n(D,null,{default:t(()=>[n(T,{loading:e.loading,onClick:e.loadAll},{icon:t(()=>[n(e.ReloadOutlined)]),default:t(()=>[m(" "+d(e.t("inference.refresh")),1)]),_:1},8,["loading"]),n(I,{trigger:["click"]},{overlay:t(()=>[n(R,{onClick:e.handleNewClick},{default:t(()=>[n(U,{key:"register"},{default:t(()=>[n(e.CloudServerOutlined),m(" "+d(e.t("inference.actions.register")),1)]),_:1}),n(U,{key:"submit"},{default:t(()=>[n(e.ThunderboltOutlined),m(" "+d(e.t("inference.actions.submit")),1)]),_:1})]),_:1})]),default:t(()=>[n(T,{type:"primary"},{icon:t(()=>[n(e.PlusOutlined)]),default:t(()=>[m(" "+d(e.t("inference.actionDropdown")),1)]),_:1})]),_:1})]),_:1})]),f(" Stat cards "),n(q,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:t(()=>[n(N,{xs:12,sm:8,lg:5},{default:t(()=>[n(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[n(L,{title:e.t("inference.stats.totalNodes"),value:e.stats.nodes.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:t(()=>[n(e.CloudServerOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),n(N,{xs:12,sm:8,lg:5},{default:t(()=>[n(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[n(L,{title:e.t("inference.stats.onlineNodes"),value:e.stats.nodes.online,"value-style":{color:e.stats.nodes.online>0?"#52c41a":"#888",fontSize:"20px"}},{prefix:t(()=>[n(e.CheckCircleOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),n(N,{xs:12,sm:8,lg:5},{default:t(()=>[n(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[n(L,{title:e.t("inference.stats.totalTasks"),value:e.stats.tasks.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:t(()=>[n(e.ThunderboltOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),n(N,{xs:12,sm:8,lg:5},{default:t(()=>[n(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[n(L,{title:e.t("inference.stats.queued"),value:e.stats.tasks.queued,"value-style":{color:e.stats.tasks.queued>0?"#faad14":"#52c41a",fontSize:"20px"}},{prefix:t(()=>[n(e.ClockCircleOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),n(N,{xs:24,sm:8,lg:4},{default:t(()=>[n(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[n(L,{title:e.t("inference.stats.avgDuration"),value:e.stats.tasks.avgDurationMs,suffix:"ms","value-style":{color:"#13c2c2",fontSize:"20px"}},null,8,["title","value"])]),_:1})]),_:1})]),_:1}),f(" Node status breakdown "),e.stats.nodes.total>0?(c(),S(M,{key:0,title:e.t("inference.breakdown.title"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:t(()=>[n(D,{size:[12,8],wrap:""},{default:t(()=>[n(C,{color:"green"},{default:t(()=>[m(d(e.t("inference.breakdown.online",{count:e.stats.nodes.online})),1)]),_:1}),n(C,{color:"orange"},{default:t(()=>[m(d(e.t("inference.breakdown.busy",{count:e.stats.nodes.busy})),1)]),_:1}),n(C,{color:"default"},{default:t(()=>[m(d(e.t("inference.breakdown.offline",{count:e.stats.nodes.offline})),1)]),_:1}),O("span",Be,d(e.t("inference.breakdown.extra",{complete:e.stats.tasks.completed,failed:e.stats.tasks.failed})),1)]),_:1})]),_:1},8,["title"])):f("v-if",!0),f(" Tabs "),n(W,{activeKey:e.activeTab,"onUpdate:activeKey":l[3]||(l[3]=r=>e.activeTab=r),class:"inference-tabs"},{default:t(()=>[f(" ── Nodes tab ─────────────────────────────────────────────── "),n(J,{key:"nodes",tab:e.t("inference.tabs.nodes")},{default:t(()=>[O("div",Ve,[n(j,{value:e.nodeStatusFilter,"onUpdate:value":l[0]||(l[0]=r=>e.nodeStatusFilter=r),size:"small","button-style":"solid"},{default:t(()=>[n(w,{value:""},{default:t(()=>[m(d(e.t("inference.filter.all")),1)]),_:1}),(c(!0),g(h,null,E(e.NODE_STATUSES,r=>(c(),S(w,{key:r,value:r},{default:t(()=>[m(d(e.nodeStatusLabel(r)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),n(v,{columns:e.nodeColumns,"data-source":e.filteredNodes,pagination:{pageSize:20,showTotal:r=>e.t("inference.totals.rows",{count:r})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:t(({column:r,record:u})=>[r.key==="nodeId"?(c(),g(h,{key:0},[O("span",He,d(u.nodeId),1),u.endpoint?(c(),g("div",Ke,d(e.truncate(u.endpoint,50)),1)):f("v-if",!0)],64)):f("v-if",!0),r.key==="capabilities"?(c(),g(h,{key:1},[(c(!0),g(h,null,E(u.capabilities.slice(0,4),x=>(c(),S(C,{key:x,color:"blue",style:{"font-size":"10px",margin:"1px"}},{default:t(()=>[m(d(x),1)]),_:2},1024))),128)),u.capabilities.length>4?(c(),S(C,{key:0,color:"default",style:{"font-size":"10px"}},{default:t(()=>[m("+"+d(u.capabilities.length-4),1)]),_:2},1024)):f("v-if",!0),u.capabilities.length?f("v-if",!0):(c(),g("span",Je,"—"))],64)):f("v-if",!0),r.key==="gpu"?(c(),g(h,{key:2},[u.gpuMemoryMb>0?(c(),g("span",Ye,d(e.formatGpuMemory(u.gpuMemoryMb)),1)):(c(),g("span",Ge,"—"))],64)):f("v-if",!0),r.key==="status"?(c(),S(C,{key:3,color:e.nodeStatusColor(u.status)},{default:t(()=>[m(d(e.nodeStatusLabel(u.status)),1)]),_:2},1032,["color"])):f("v-if",!0),r.key==="taskCount"?(c(),S(C,{key:4,color:"purple",style:{"font-size":"11px"}},{default:t(()=>[m(d(u.taskCount),1)]),_:2},1024)):f("v-if",!0),r.key==="lastHeartbeat"?(c(),g("span",We,d(e.formatInferenceTime(u.lastHeartbeat)),1)):f("v-if",!0),r.key==="action"?(c(),g(h,{key:6},[n(T,{size:"small",type:"link",loading:e.heartbeatId===u.id,onClick:x=>e.sendHeartbeat(u)},{default:t(()=>[m(d(e.t("inference.rowActions.heartbeat")),1)]),_:1},8,["loading","onClick"]),n(I,{trigger:["click"]},{overlay:t(()=>[n(R,{onClick:x=>e.transitionStatus(u,x.key)},{default:t(()=>[(c(!0),g(h,null,E(e.NODE_STATUSES,x=>(c(),S(U,{key:x,disabled:x===u.status},{default:t(()=>[m(d(e.nodeStatusLabel(x)),1)]),_:2},1032,["disabled"]))),128))]),_:2},1032,["onClick"])]),default:t(()=>[n(T,{size:"small",type:"link"},{default:t(()=>[m(d(e.t("inference.rowActions.statusDropdown")),1)]),_:1})]),_:2},1024),n(k,{title:e.t("inference.rowActions.unregisterConfirm"),"ok-text":e.t("inference.rowActions.unregisterOk"),"cancel-text":e.t("common.cancel"),onConfirm:x=>e.unregisterNode(u)},{default:t(()=>[n(T,{size:"small",type:"link",danger:""},{default:t(()=>[m(d(e.t("inference.rowActions.unregister")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])],64)):f("v-if",!0)]),emptyText:t(()=>[O("div",Qe,[n(e.CloudServerOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),m(" "+d(e.nodeStatusFilter?e.t("inference.empty.filteredNodes"):e.t("inference.empty.noNodes")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),f(" ── Tasks tab ─────────────────────────────────────────────── "),n(J,{key:"tasks",tab:e.t("inference.tabs.tasks")},{default:t(()=>[O("div",Ze,[n(j,{value:e.taskStatusFilter,"onUpdate:value":l[1]||(l[1]=r=>e.taskStatusFilter=r),size:"small"},{default:t(()=>[n(w,{value:""},{default:t(()=>[m(d(e.t("inference.filter.allStatuses")),1)]),_:1}),(c(!0),g(h,null,E(e.TASK_STATUSES,r=>(c(),S(w,{key:r,value:r},{default:t(()=>[m(d(e.taskStatusLabel(r)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),n(j,{value:e.taskPrivacyFilter,"onUpdate:value":l[2]||(l[2]=r=>e.taskPrivacyFilter=r),size:"small"},{default:t(()=>[n(w,{value:""},{default:t(()=>[m(d(e.t("inference.filter.allModes")),1)]),_:1}),(c(!0),g(h,null,E(e.PRIVACY_MODES,r=>(c(),S(w,{key:r,value:r},{default:t(()=>[m(d(e.privacyLabel(r)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),n(v,{columns:e.taskColumns,"data-source":e.filteredTasks,pagination:{pageSize:20,showTotal:r=>e.t("inference.totals.rows",{count:r})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:t(({column:r,record:u})=>[r.key==="model"?(c(),g(h,{key:0},[O("span",Xe,d(u.model),1),u.input?(c(),g("div",$e,d(e.truncate(u.input,60)),1)):f("v-if",!0)],64)):f("v-if",!0),r.key==="privacyMode"?(c(),S(C,{key:1,color:e.privacyColor(u.privacyMode)},{default:t(()=>[m(d(e.privacyLabel(u.privacyMode)),1)]),_:2},1032,["color"])):f("v-if",!0),r.key==="priority"?(c(),g("span",{key:2,style:Se({color:e.priorityColor(u.priority),fontWeight:500})},d(u.priority),5)):f("v-if",!0),r.key==="assignedNode"?(c(),g(h,{key:3},[u.assignedNode?(c(),g("span",et,d(e.nodeShortName(u.assignedNode)),1)):(c(),g("span",tt,"—"))],64)):f("v-if",!0),r.key==="status"?(c(),S(C,{key:4,color:e.taskStatusColor(u.status)},{default:t(()=>[m(d(e.taskStatusLabel(u.status)),1)]),_:2},1032,["color"])):f("v-if",!0),r.key==="duration"?(c(),g(h,{key:5},[u.durationMs!=null?(c(),g("span",nt,d(u.durationMs)+" ms ",1)):(c(),g("span",at,"—"))],64)):f("v-if",!0),r.key==="createdAt"?(c(),g("span",ot,d(e.formatInferenceTime(u.createdAt)),1)):f("v-if",!0),r.key==="action"?(c(),g(h,{key:7},[e.canComplete(u)?(c(),S(T,{key:0,size:"small",type:"link",loading:e.completingId===u.id,onClick:x=>e.completeTask(u)},{default:t(()=>[m(d(e.t("inference.rowActions.complete")),1)]),_:1},8,["loading","onClick"])):f("v-if",!0),e.canFail(u)?(c(),S(k,{key:1,title:e.t("inference.rowActions.failConfirm"),"ok-text":e.t("inference.rowActions.failOk"),"cancel-text":e.t("common.cancel"),onConfirm:x=>e.failTask(u)},{default:t(()=>[n(T,{size:"small",type:"link",danger:""},{default:t(()=>[m(d(e.t("inference.rowActions.fail")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):f("v-if",!0)],64)):f("v-if",!0)]),emptyText:t(()=>[O("div",it,[n(e.ThunderboltOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),m(" "+d(e.taskStatusFilter||e.taskPrivacyFilter?e.t("inference.empty.filteredTasks"):e.t("inference.empty.noTasks")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"])]),_:1},8,["activeKey"]),f(" ── Register node modal ──────────────────────────────────── "),n(G,{open:e.showRegisterModal,"onUpdate:open":l[8]||(l[8]=r=>e.showRegisterModal=r),title:e.t("inference.register.title"),"confirm-loading":e.registering,width:520,"ok-text":e.t("inference.register.ok"),"cancel-text":e.t("common.cancel"),onOk:e.registerNode,onCancel:e.resetRegisterForm},{default:t(()=>[n(Y,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:t(()=>[n(A,{label:e.t("inference.register.nodeIdLabel"),required:""},{default:t(()=>[n(P,{value:e.registerForm.nodeId,"onUpdate:value":l[4]||(l[4]=r=>e.registerForm.nodeId=r),placeholder:e.t("inference.register.nodeIdPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(A,{label:e.t("inference.register.endpointLabel")},{default:t(()=>[n(P,{value:e.registerForm.endpoint,"onUpdate:value":l[5]||(l[5]=r=>e.registerForm.endpoint=r),placeholder:e.t("inference.register.endpointPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(A,{label:e.t("inference.register.capabilitiesLabel")},{default:t(()=>[n(P,{value:e.registerForm.capabilities,"onUpdate:value":l[6]||(l[6]=r=>e.registerForm.capabilities=r),placeholder:e.t("inference.register.capabilitiesPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(A,{label:e.t("inference.register.gpuLabel")},{default:t(()=>[n(B,{value:e.registerForm.gpuMemory,"onUpdate:value":l[7]||(l[7]=r=>e.registerForm.gpuMemory=r),min:0,max:2e5,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),f(" ── Submit task modal ────────────────────────────────────── "),n(G,{open:e.showSubmitModal,"onUpdate:open":l[13]||(l[13]=r=>e.showSubmitModal=r),title:e.t("inference.submit.title"),"confirm-loading":e.submitting,width:520,"ok-text":e.t("inference.submit.ok"),"cancel-text":e.t("common.cancel"),onOk:e.submitTask,onCancel:e.resetSubmitForm},{default:t(()=>[n(Y,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:t(()=>[n(A,{label:e.t("inference.submit.modelLabel"),required:""},{default:t(()=>[n(P,{value:e.submitForm.model,"onUpdate:value":l[9]||(l[9]=r=>e.submitForm.model=r),placeholder:e.t("inference.submit.modelPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(A,{label:e.t("inference.submit.inputLabel")},{default:t(()=>[n(Q,{value:e.submitForm.input,"onUpdate:value":l[10]||(l[10]=r=>e.submitForm.input=r),"auto-size":{minRows:3,maxRows:6}},null,8,["value"])]),_:1},8,["label"]),n(A,{label:e.t("inference.submit.priorityLabel")},{default:t(()=>[n(B,{value:e.submitForm.priority,"onUpdate:value":l[11]||(l[11]=r=>e.submitForm.priority=r),min:1,max:10,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"]),n(A,{label:e.t("inference.submit.modeLabel")},{default:t(()=>[n(j,{value:e.submitForm.mode,"onUpdate:value":l[12]||(l[12]=r=>e.submitForm.mode=r)},{default:t(()=>[(c(!0),g(h,null,E(e.PRIVACY_MODES,r=>(c(),S(w,{key:r,value:r},{default:t(()=>[m(d(e.privacyLabel(r)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])])}const ct=he(De,[["render",rt],["__scopeId","data-v-93ae85f8"],["__file","/tmp/cc-web-panel-1Koio1/repo/packages/web-panel/src/views/Inference.vue"]]);export{ct as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as p,J as f,U as C,R as u,c as l,K as r,V as b,o as ae,a as Y,b as U,r as y,P as i,Q as _,F as x,Z as V,S as T}from"./vendor-Bn1JzzAn.js";import{t as $,_ as me,u as le,b as oe,d as h}from"./index-DPguq3X7.js";import{a0 as ve,a$ as fe,$ as be,f as ke,a9 as _e,z as ye,R as ge}from"./icons-DEmcnxBf.js";const he=Object.freeze(["draft","published","deprecated","suspended"]),Se=Object.freeze(["pending","running","success","failed","timeout"]);function B(t,o=0){return typeof t=="number"&&Number.isFinite(t)?t:o}function Ce(t,o=0){if(!t||typeof t!="object")return null;const c=t.id||"";return c?{key:c,id:c,name:String(t.name||""),version:String(t.version||""),description:String(t.description||""),endpoint:t.endpoint||"",pricing:t.pricing??null,status:String(t.status||"draft").toLowerCase(),owner:t.owner||"",invocationCount:B(t.invocationCount??t.invocation_count,0),createdAt:t.createdAt??t.created_at??null,updatedAt:t.updatedAt??t.updated_at??null,_idx:o}:null}function re(t){const o=$(t);return Array.isArray(o)?o.map(Ce).filter(Boolean):[]}function xe(t,o=0){if(!t||typeof t!="object")return null;const c=t.id||"";return c?{key:c,id:c,serviceId:t.serviceId||t.service_id||"",callerId:t.callerId||t.caller_id||"",input:t.input??null,output:t.output??null,status:String(t.status||"success").toLowerCase(),durationMs:t.durationMs??t.duration_ms??null,error:t.error||"",createdAt:t.createdAt??t.created_at??null,_idx:o}:null}function ne(t){const o=$(t);return Array.isArray(o)?o.map(xe).filter(Boolean):[]}function se(t){const o={total:0,counts:{success:0,failed:0,timeout:0,pending:0,running:0},successRate:0,avgDurationMs:0,scopedToService:null},c=$(t);if(!c||typeof c!="object"||Array.isArray(c))return o;o.total=B(c.total,0),o.successRate=B(c.successRate??c.success_rate,0),o.avgDurationMs=B(c.avgDurationMs??c.avg_duration_ms,0),o.scopedToService=c.scopedToService??c.scoped_to_service??null;const e=c.counts&&typeof c.counts=="object"?c.counts:{};for(const I of Object.keys(o.counts))o.counts[I]=B(e[I],0);return o}function Fe(t){if(t==null||t==="")return"—";const o=typeof t=="number"?new Date(t):new Date(String(t));return isNaN(o.getTime())?String(t):o.toLocaleString("zh-CN",{hour12:!1})}const we={__name:"Marketplace",setup(t,{expose:o}){o();const c=le(),{t:e}=oe(),I=y(!1),K=y(!1),R=y(!1),O=y([]),F=y([]),w=y({total:0,counts:{success:0,failed:0,timeout:0,pending:0,running:0},successRate:0,avgDurationMs:0,scopedToService:null}),A=y("services"),E=y(""),L=y(""),P=y(null),J=y(!1),M=y(!1),k=Y({name:"",version:"",description:"",endpoint:"",owner:"",status:"published"}),m=Y({serviceId:"",caller:"",status:"success",durationMs:null,error:""}),N=y(""),W=U(()=>[{title:e("marketplace.serviceCols.name"),key:"name"},{title:e("marketplace.serviceCols.status"),key:"status",width:"120px"},{title:e("marketplace.serviceCols.invocationCount"),key:"invocationCount",width:"110px"},{title:e("marketplace.serviceCols.owner"),key:"owner",width:"180px"},{title:e("marketplace.serviceCols.createdAt"),key:"createdAt",width:"160px"},{title:e("marketplace.serviceCols.action"),key:"action",width:"180px"}]),q=U(()=>[{title:e("marketplace.invocationCols.service"),key:"service"},{title:e("marketplace.invocationCols.caller"),key:"caller",width:"180px"},{title:e("marketplace.invocationCols.status"),key:"status",width:"100px"},{title:e("marketplace.invocationCols.durationMs"),key:"durationMs",width:"110px"},{title:e("marketplace.invocationCols.createdAt"),key:"createdAt",width:"160px"}]),j=U(()=>O.value.filter(n=>n.status==="published").length),D=U(()=>w.value.successRate*100),H=U(()=>{let n=O.value;if(E.value&&(n=n.filter(s=>s.status===E.value)),L.value){const s=L.value.toLowerCase();n=n.filter(v=>v.name.toLowerCase().includes(s))}return n}),z=U(()=>P.value?F.value.filter(n=>n.serviceId===P.value):F.value);function g(n){const s=`marketplace.serviceStatusLabels.${n}`,v=e(s);return v===s?n:v}function Q(n){return{draft:"default",published:"green",deprecated:"orange",suspended:"red"}[n]||"default"}function Z(n){const s=`marketplace.invocationStatusLabels.${n}`,v=e(s);return v===s?n:v}function G(n){return{pending:"default",running:"processing",success:"green",failed:"red",timeout:"orange"}[n]||"default"}function X(n){return n?n.length>28?n.slice(0,16)+"..."+n.slice(-8):n:""}function a(n,s){return n?n.length>s?n.slice(0,s)+"...":n:""}function d(n){const s=O.value.find(v=>v.id===n);return s?s.name:e("marketplace.deletedService")}async function S(){I.value=!0;try{const[n,s,v]=await Promise.all([c.execute("marketplace list --limit 200 --json",1e4).catch(()=>({output:""})),c.execute("marketplace invocations --limit 200 --json",1e4).catch(()=>({output:""})),c.execute("marketplace stats --json",1e4).catch(()=>({output:""}))]);O.value=re(n.output),F.value=ne(s.output),w.value=se(v.output)}catch(n){h.error(e("marketplace.msg.loadFailed")+": "+(n?.message||n))}finally{I.value=!1}}async function ie(){const n=k.name.trim();if(!n){h.warning(e("marketplace.msg.publishEmpty"));return}K.value=!0;try{const s=[`marketplace publish "${n.replace(/"/g,'\\"')}"`];k.version.trim()&&s.push(`--version "${k.version.trim().replace(/"/g,'\\"')}"`),k.description.trim()&&s.push(`--description "${k.description.trim().replace(/"/g,'\\"')}"`),k.endpoint.trim()&&s.push(`--endpoint "${k.endpoint.trim().replace(/"/g,'\\"')}"`),k.owner.trim()&&s.push(`--owner "${k.owner.trim().replace(/"/g,'\\"')}"`),s.push(`--status ${k.status}`),s.push("--json");const{output:v}=await c.execute(s.join(" "),15e3);if(/error|failed|失败/i.test(v)&&!/"id"/.test(v)){h.error(e("marketplace.msg.publishFailed")+": "+v.slice(0,120));return}h.success(e("marketplace.msg.publishSuccess")),J.value=!1,ee(),await S()}catch(s){h.error(e("marketplace.msg.publishFailed")+": "+(s?.message||s))}finally{K.value=!1}}function ce(n){if(n.status!=="published"){h.warning(e("marketplace.msg.recordOnlyPublished"));return}m.serviceId=n.id,m.caller="",m.status="success",m.durationMs=null,m.error="",N.value=n.name,M.value=!0}async function ue(){R.value=!0;try{const n=[`marketplace record ${m.serviceId}`];m.caller.trim()&&n.push(`--caller "${m.caller.trim().replace(/"/g,'\\"')}"`),n.push(`--status ${m.status}`),m.durationMs!=null&&n.push(`--duration-ms ${m.durationMs}`),(m.status==="failed"||m.status==="timeout")&&m.error.trim()&&n.push(`--error "${m.error.trim().replace(/"/g,'\\"')}"`),n.push("--json");const{output:s}=await c.execute(n.join(" "),15e3);if(/error|failed|失败/i.test(s)&&!/"id"/.test(s)){h.error(e("marketplace.msg.recordFailed")+": "+s.slice(0,120));return}h.success(e("marketplace.msg.recordSuccess")),M.value=!1,A.value="invocations",await S()}catch(n){h.error(e("marketplace.msg.recordFailed")+": "+(n?.message||n))}finally{R.value=!1}}async function de(n,s){if(s!==n.status)try{const{output:v}=await c.execute(`marketplace status ${n.id} ${s} --json`,1e4);if(/error|invalid|失败/i.test(v)&&!/"status"/.test(v)){h.error(e("marketplace.msg.transitionFailed")+": "+v.slice(0,120));return}h.success(e("marketplace.msg.transitionSuccess",{label:g(s)})),await S()}catch(v){h.error(e("marketplace.msg.transitionFailed")+": "+(v?.message||v))}}function ee(){k.name="",k.version="",k.description="",k.endpoint="",k.owner="",k.status="published"}function pe(){m.serviceId="",m.caller="",m.status="success",m.durationMs=null,m.error="",N.value=""}ae(S);const te={ws:c,t:e,loading:I,publishing:K,recording:R,services:O,invocations:F,stats:w,activeTab:A,statusFilter:E,nameFilter:L,invocationServiceFilter:P,showPublishModal:J,showRecordModal:M,publishForm:k,recordForm:m,recordTargetName:N,serviceColumns:W,invocationColumns:q,publishedCount:j,successRatePct:D,filteredServices:H,filteredInvocations:z,statusLabel:g,serviceStatusColor:Q,invocationStatusLabel:Z,invocationStatusColor:G,shortDid:X,truncate:a,serviceName:d,loadAll:S,publishService:ie,openRecord:ce,recordInvocation:ue,transitionStatus:de,resetPublishForm:ee,resetRecordForm:pe,ref:y,computed:U,onMounted:ae,reactive:Y,get ReloadOutlined(){return ge},get CloudUploadOutlined(){return ye},get AppstoreOutlined(){return _e},get CheckCircleOutlined(){return ke},get ThunderboltOutlined(){return be},get RiseOutlined(){return fe},get ClockCircleOutlined(){return ve},get message(){return h},get useI18n(){return oe},get useWsStore(){return le},get parseServices(){return re},get parseInvocations(){return ne},get parseStats(){return se},get formatMarketplaceTime(){return Fe},get SERVICE_STATUSES(){return he},get INVOCATION_STATUSES(){return Se}};return Object.defineProperty(te,"__isScriptSetup",{enumerable:!1,value:!0}),te}},Te={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Re={class:"page-title"},Ae={class:"page-sub"},Ie={class:"filter-bar"},Oe={style:{color:"var(--text-primary)","font-weight":"500"}},Me={key:1,style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"2px"}},ze={key:2,style:{color:"#722ed1","font-weight":"500"}},Ue={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"11px"}},Le={key:1,style:{color:"var(--text-muted)"}},Ee={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},Pe={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Ne={class:"filter-bar"},je={style:{color:"var(--text-primary)"}},De={style:{color:"var(--text-muted)","font-size":"11px","font-family":"monospace"}},Ve={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"11px"}},Be={key:1,style:{color:"var(--text-muted)"}},Ke={key:0,style:{color:"var(--text-secondary)","font-size":"12px"}},Je={key:1,style:{color:"var(--text-muted)"}},We={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},qe={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}};function Qe(t,o,c,e,I,K){const R=p("a-button"),O=p("a-space"),F=p("a-statistic"),w=p("a-card"),A=p("a-col"),E=p("a-row"),L=p("a-radio-button"),P=p("a-radio-group"),J=p("a-input-search"),M=p("a-tag"),k=p("a-menu-item"),m=p("a-menu"),N=p("a-dropdown"),W=p("a-table"),q=p("a-tab-pane"),j=p("a-select-option"),D=p("a-select"),H=p("a-tabs"),z=p("a-input"),g=p("a-form-item"),Q=p("a-textarea"),Z=p("a-form"),G=p("a-modal"),X=p("a-input-number");return i(),f("div",null,[C("div",Te,[C("div",null,[C("h2",Re,u(t.$t("marketplace.title")),1),C("p",Ae,u(t.$t("marketplace.subtitle")),1)]),l(O,null,{default:r(()=>[l(R,{loading:e.loading,onClick:e.loadAll},{icon:r(()=>[l(e.ReloadOutlined)]),default:r(()=>[_(" "+u(t.$t("marketplace.refresh")),1)]),_:1},8,["loading"]),l(R,{type:"primary",onClick:o[0]||(o[0]=a=>e.showPublishModal=!0)},{icon:r(()=>[l(e.CloudUploadOutlined)]),default:r(()=>[_(" "+u(t.$t("marketplace.publish")),1)]),_:1})]),_:1})]),b(" Stats overview "),l(E,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:r(()=>[l(A,{xs:12,sm:8,lg:5},{default:r(()=>[l(w,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[l(F,{title:t.$t("marketplace.stats.total"),value:e.services.length,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:r(()=>[l(e.AppstoreOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),l(A,{xs:12,sm:8,lg:5},{default:r(()=>[l(w,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[l(F,{title:t.$t("marketplace.stats.published"),value:e.publishedCount,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:r(()=>[l(e.CheckCircleOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),l(A,{xs:12,sm:8,lg:5},{default:r(()=>[l(w,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[l(F,{title:t.$t("marketplace.stats.invocations"),value:e.stats.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:r(()=>[l(e.ThunderboltOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),l(A,{xs:12,sm:8,lg:5},{default:r(()=>[l(w,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[l(F,{title:t.$t("marketplace.stats.successRate"),value:e.successRatePct,suffix:"%",precision:1,"value-style":{color:e.stats.successRate>=.9?"#52c41a":"#faad14",fontSize:"20px"}},{prefix:r(()=>[l(e.RiseOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),l(A,{xs:24,sm:8,lg:4},{default:r(()=>[l(w,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[l(F,{title:t.$t("marketplace.stats.avgDuration"),value:e.stats.avgDurationMs,suffix:"ms","value-style":{color:"#faad14",fontSize:"20px"}},{prefix:r(()=>[l(e.ClockCircleOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),b(" Tabs "),l(H,{activeKey:e.activeTab,"onUpdate:activeKey":o[4]||(o[4]=a=>e.activeTab=a),class:"market-tabs"},{default:r(()=>[b(" ── Services tab ──────────────────────────────────────────── "),l(q,{key:"services",tab:t.$t("marketplace.tabs.services")},{default:r(()=>[C("div",Ie,[l(P,{value:e.statusFilter,"onUpdate:value":o[1]||(o[1]=a=>e.statusFilter=a),size:"small","button-style":"solid"},{default:r(()=>[l(L,{value:""},{default:r(()=>[_(u(t.$t("marketplace.filter.all")),1)]),_:1}),(i(!0),f(x,null,V(e.SERVICE_STATUSES,a=>(i(),T(L,{key:a,value:a},{default:r(()=>[_(u(e.statusLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),l(J,{value:e.nameFilter,"onUpdate:value":o[2]||(o[2]=a=>e.nameFilter=a),placeholder:t.$t("marketplace.filter.namePlaceholder"),"allow-clear":"",style:{"max-width":"280px"}},null,8,["value","placeholder"])]),l(W,{columns:e.serviceColumns,"data-source":e.filteredServices,pagination:{pageSize:20,showTotal:a=>t.$t("marketplace.table.totalSuffix",{n:a})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:r(({column:a,record:d})=>[a.key==="name"?(i(),f(x,{key:0},[C("span",Oe,u(d.name),1),d.version?(i(),T(M,{key:0,color:"blue",style:{"margin-left":"6px","font-size":"10px"}},{default:r(()=>[_(" v"+u(d.version),1)]),_:2},1024)):b("v-if",!0),d.description?(i(),f("div",Me,u(e.truncate(d.description,80)),1)):b("v-if",!0)],64)):b("v-if",!0),a.key==="status"?(i(),T(M,{key:1,color:e.serviceStatusColor(d.status)},{default:r(()=>[_(u(e.statusLabel(d.status)),1)]),_:2},1032,["color"])):b("v-if",!0),a.key==="invocationCount"?(i(),f("span",ze,u(d.invocationCount),1)):b("v-if",!0),a.key==="owner"?(i(),f(x,{key:3},[d.owner?(i(),f("span",Ue,u(e.shortDid(d.owner)),1)):(i(),f("span",Le,"—"))],64)):b("v-if",!0),a.key==="createdAt"?(i(),f("span",Ee,u(e.formatMarketplaceTime(d.createdAt)),1)):b("v-if",!0),a.key==="action"?(i(),f(x,{key:5},[l(R,{size:"small",type:"link",onClick:S=>e.openRecord(d)},{default:r(()=>[_(u(t.$t("marketplace.table.actionRecord")),1)]),_:1},8,["onClick"]),l(N,{trigger:["click"]},{overlay:r(()=>[l(m,{onClick:S=>e.transitionStatus(d,S.key)},{default:r(()=>[(i(!0),f(x,null,V(e.SERVICE_STATUSES,S=>(i(),T(k,{key:S,disabled:S===d.status},{default:r(()=>[_(u(e.statusLabel(S)),1)]),_:2},1032,["disabled"]))),128))]),_:2},1032,["onClick"])]),default:r(()=>[l(R,{size:"small",type:"link"},{default:r(()=>[_(u(t.$t("marketplace.table.statusDropdown")),1)]),_:1})]),_:2},1024)],64)):b("v-if",!0)]),emptyText:r(()=>[C("div",Pe,[l(e.AppstoreOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),_(" "+u(e.statusFilter||e.nameFilter?t.$t("marketplace.table.emptyFiltered"):t.$t("marketplace.table.empty")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),b(" ── Invocations tab ───────────────────────────────────────── "),l(q,{key:"invocations",tab:t.$t("marketplace.tabs.invocations")},{default:r(()=>[C("div",Ne,[l(D,{value:e.invocationServiceFilter,"onUpdate:value":o[3]||(o[3]=a=>e.invocationServiceFilter=a),placeholder:t.$t("marketplace.filter.byService"),"allow-clear":"",style:{width:"280px"},size:"small"},{default:r(()=>[(i(!0),f(x,null,V(e.services,a=>(i(),T(j,{key:a.id,value:a.id},{default:r(()=>[_(u(a.name)+" ("+u(e.statusLabel(a.status))+") ",1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder"])]),l(W,{columns:e.invocationColumns,"data-source":e.filteredInvocations,pagination:{pageSize:20,showTotal:a=>t.$t("marketplace.table.totalSuffix",{n:a})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:r(({column:a,record:d})=>[a.key==="service"?(i(),f(x,{key:0},[C("span",je,u(e.serviceName(d.serviceId)),1),C("div",De,u(d.serviceId.slice(0,8)),1)],64)):b("v-if",!0),a.key==="caller"?(i(),f(x,{key:1},[d.callerId?(i(),f("span",Ve,u(e.shortDid(d.callerId)),1)):(i(),f("span",Be,"—"))],64)):b("v-if",!0),a.key==="status"?(i(),T(M,{key:2,color:e.invocationStatusColor(d.status)},{default:r(()=>[_(u(e.invocationStatusLabel(d.status)),1)]),_:2},1032,["color"])):b("v-if",!0),a.key==="durationMs"?(i(),f(x,{key:3},[d.durationMs!=null?(i(),f("span",Ke,u(d.durationMs)+" ms ",1)):(i(),f("span",Je,"—"))],64)):b("v-if",!0),a.key==="createdAt"?(i(),f("span",We,u(e.formatMarketplaceTime(d.createdAt)),1)):b("v-if",!0)]),emptyText:r(()=>[C("div",qe,[l(e.ThunderboltOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),_(" "+u(t.$t("marketplace.table.emptyInvocations")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"])]),_:1},8,["activeKey"]),b(" ── Publish service modal ─────────────────────────────────── "),l(G,{open:e.showPublishModal,"onUpdate:open":o[11]||(o[11]=a=>e.showPublishModal=a),title:t.$t("marketplace.publish_modal.title"),"confirm-loading":e.publishing,width:560,"ok-text":t.$t("marketplace.publish_modal.ok"),"cancel-text":t.$t("marketplace.publish_modal.cancel"),onOk:e.publishService,onCancel:e.resetPublishForm},{default:r(()=>[l(Z,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:r(()=>[l(g,{label:t.$t("marketplace.publish_modal.nameLabel"),required:""},{default:r(()=>[l(z,{value:e.publishForm.name,"onUpdate:value":o[5]||(o[5]=a=>e.publishForm.name=a),placeholder:t.$t("marketplace.publish_modal.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),l(g,{label:t.$t("marketplace.publish_modal.versionLabel")},{default:r(()=>[l(z,{value:e.publishForm.version,"onUpdate:value":o[6]||(o[6]=a=>e.publishForm.version=a),placeholder:t.$t("marketplace.publish_modal.versionPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),l(g,{label:t.$t("marketplace.publish_modal.descLabel")},{default:r(()=>[l(Q,{value:e.publishForm.description,"onUpdate:value":o[7]||(o[7]=a=>e.publishForm.description=a),"auto-size":{minRows:2,maxRows:5}},null,8,["value"])]),_:1},8,["label"]),l(g,{label:t.$t("marketplace.publish_modal.endpointLabel")},{default:r(()=>[l(z,{value:e.publishForm.endpoint,"onUpdate:value":o[8]||(o[8]=a=>e.publishForm.endpoint=a),placeholder:t.$t("marketplace.publish_modal.endpointPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),l(g,{label:t.$t("marketplace.publish_modal.ownerLabel")},{default:r(()=>[l(z,{value:e.publishForm.owner,"onUpdate:value":o[9]||(o[9]=a=>e.publishForm.owner=a),placeholder:t.$t("marketplace.publish_modal.ownerPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),l(g,{label:t.$t("marketplace.publish_modal.statusLabel")},{default:r(()=>[l(D,{value:e.publishForm.status,"onUpdate:value":o[10]||(o[10]=a=>e.publishForm.status=a)},{default:r(()=>[(i(!0),f(x,null,V(e.SERVICE_STATUSES,a=>(i(),T(j,{key:a,value:a},{default:r(()=>[_(u(e.statusLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),b(" ── Record invocation modal ───────────────────────────────── "),l(G,{open:e.showRecordModal,"onUpdate:open":o[16]||(o[16]=a=>e.showRecordModal=a),title:t.$t("marketplace.record_modal.title",{name:e.recordTargetName}),"confirm-loading":e.recording,width:520,"ok-text":t.$t("marketplace.record_modal.ok"),"cancel-text":t.$t("marketplace.record_modal.cancel"),onOk:e.recordInvocation,onCancel:e.resetRecordForm},{default:r(()=>[l(Z,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:r(()=>[l(g,{label:t.$t("marketplace.record_modal.callerLabel")},{default:r(()=>[l(z,{value:e.recordForm.caller,"onUpdate:value":o[12]||(o[12]=a=>e.recordForm.caller=a),placeholder:t.$t("marketplace.record_modal.callerPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),l(g,{label:t.$t("marketplace.record_modal.statusLabel")},{default:r(()=>[l(D,{value:e.recordForm.status,"onUpdate:value":o[13]||(o[13]=a=>e.recordForm.status=a)},{default:r(()=>[(i(!0),f(x,null,V(e.INVOCATION_STATUSES,a=>(i(),T(j,{key:a,value:a},{default:r(()=>[_(u(e.invocationStatusLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),l(g,{label:t.$t("marketplace.record_modal.durationLabel")},{default:r(()=>[l(X,{value:e.recordForm.durationMs,"onUpdate:value":o[14]||(o[14]=a=>e.recordForm.durationMs=a),min:0,max:36e5,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"]),e.recordForm.status==="failed"||e.recordForm.status==="timeout"?(i(),T(g,{key:0,label:t.$t("marketplace.record_modal.errorLabel")},{default:r(()=>[l(Q,{value:e.recordForm.error,"onUpdate:value":o[15]||(o[15]=a=>e.recordForm.error=a),"auto-size":{minRows:2,maxRows:4}},null,8,["value"])]),_:1},8,["label"])):b("v-if",!0)]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])])}const Xe=me(we,[["render",Qe],["__scopeId","data-v-892f664d"],["__file","/tmp/cc-web-panel-1Koio1/repo/packages/web-panel/src/views/Marketplace.vue"]]);export{Xe as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as w,P as l,J as u,U as s,R as n,c as i,K as v,Q as _,V as g,b as o}from"./vendor-Bn1JzzAn.js";import{_ as S}from"./index-DPguq3X7.js";import"./icons-DEmcnxBf.js";const k={__name:"OrderTableRenderer",props:{event:{type:Object,required:!0}},setup(p,{expose:r}){r();const a=p,e=o(()=>a.event.content||{}),d=o(()=>a.event.extra||{}),m=o(()=>d.value.merchant||e.value.merchant||e.value.counterparty||"—"),c=o(()=>e.value.title||e.value.name||e.value.itemName||e.value.text||"—"),y=o(()=>{const t=e.value.amount??e.value.price??e.value.total;return t==null?"—":`${e.value.currency||"¥"} ${typeof t=="number"?t.toFixed(2):t}`}),T=o(()=>d.value.orderNo||e.value.orderNo||e.value.orderId),f=o(()=>e.value.status||e.value.state),b=o(()=>{const t=(f.value||"").toLowerCase();return t.includes("成功")||t.includes("succe")||t.includes("paid")?"green":t.includes("退")||t.includes("refund")?"orange":t.includes("失败")||t.includes("fail")?"red":"default"}),h=o(()=>{if(!a.event.occurredAt)return"";const t=new Date(a.event.occurredAt);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")} ${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}`}),x={props:a,c:e,e:d,merchantText:m,itemText:c,amountText:y,orderNo:T,statusText:f,statusColor:b,formattedTime:h,computed:o};return Object.defineProperty(x,"__isScriptSetup",{enumerable:!1,value:!0}),x}},N={class:"order-card"},C={class:"head"},O={class:"time"},V={class:"row"},R={class:"val"},B={class:"row"},D={class:"val"},I={class:"row amount-row"},j={class:"val amount"},A={key:0,class:"row"},F={class:"val mono"},K={key:1,class:"row"};function M(p,r,a,e,d,m){const c=w("a-tag");return l(),u("div",N,[s("div",C,[s("span",O,n(e.formattedTime),1),i(c,{color:"gold"},{default:v(()=>[_(n(a.event.source.adapter),1)]),_:1}),i(c,null,{default:v(()=>[_(n(a.event.subtype),1)]),_:1})]),s("div",V,[r[0]||(r[0]=s("span",{class:"key"},"商户",-1)),s("span",R,n(e.merchantText),1)]),s("div",B,[r[1]||(r[1]=s("span",{class:"key"},"商品/项目",-1)),s("span",D,n(e.itemText),1)]),s("div",I,[r[2]||(r[2]=s("span",{class:"key"},"金额",-1)),s("span",j,n(e.amountText),1)]),e.orderNo?(l(),u("div",A,[r[3]||(r[3]=s("span",{class:"key"},"单号",-1)),s("span",F,n(e.orderNo),1)])):g("v-if",!0),e.statusText?(l(),u("div",K,[r[4]||(r[4]=s("span",{class:"key"},"状态",-1)),i(c,{color:e.statusColor},{default:v(()=>[_(n(e.statusText),1)]),_:1},8,["color"])])):g("v-if",!0)])}const J=S(k,[["render",M],["__scopeId","data-v-5ed5524d"],["__file","/tmp/cc-web-panel-1Koio1/repo/packages/web-panel/src/components/pdh/renderers/OrderTableRenderer.vue"]]);export{J as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as m,J as p,U as v,R as s,c as o,K as n,V as d,S as x,o as me,b as se,a as te,r as _,P as u,Q as f,F,Z as L,_ as Ue,$ as pe}from"./vendor-Bn1JzzAn.js";import{Y as Pe,t as W,_ as Be,b as fe,u as ye,E as be,d as g}from"./index-DPguq3X7.js";import ve from"./index-PkH39qsp.js";import{aU as Ve,l as Ye,L as Je,q as Ke,at as We,ak as qe,$ as Ze,am as He,as as Ge,R as Qe}from"./icons-DEmcnxBf.js";import"./KeyCode-D63Tfrq7.js";import"./omit-BPHKbDcf.js";import"./pickAttrs-LNnTscuz.js";import"./initDefaultProps-BrgfVRg9.js";import"./motion-D_3xmwac.js";import"./raf-Deuc0E8-.js";import"./index-BpGlLbRv.js";import"./index-D2yhtk6a.js";import"./isVisible-C7tPsqfj.js";import"./useState-CnxtbLoC.js";import"./devWarning-DEcR2h6k.js";import"./compact-item-vkd7s-ay.js";import"./createContext-C7YkbMyy.js";import"./Compact-CabbZVww.js";import"./_getTag-DnrRH4E6.js";import"./styleChecker-DtyKMtHB.js";import"./zoom-Cyk2PQ-s.js";import"./ActionButton-Cv9er9bp.js";import"./vnode-KcgLUiom.js";const Se=Object.freeze(["accuracy","fairness","resilience","convergence_speed"]),Xe=Object.freeze(["none","exponential","linear","step"]),$e=Object.freeze(["z_score","iqr"]),Oe=Object.freeze(["running","complete","applied","failed","cancelled"]),et=Object.freeze(["generic","task","review","vote"]);function k(l,t=0){return typeof l=="number"&&Number.isFinite(l)?l:t}function N(l){if(!l)return{noDb:!1,error:""};const t=Pe(l),r=/Database not available/i.test(t);return{noDb:r,error:r?"Database not available":""}}function tt(l,t=0){if(!l||typeof l!="object")return null;const r=l.did||"";return r?{key:r,did:r,score:k(l.score,0),observations:k(l.observations,0),decay:String(l.decay||"none"),weightTotal:k(l.weightTotal,0),_idx:t}:null}function ce(l){const t=W(l);return Array.isArray(t)?t.map(tt).filter(Boolean):[]}function ze(l,t=0){if(!l||typeof l!="object")return null;const r=l.did||"";return r?{key:`${r}-${t}`,did:r,score:k(l.score,0),reason:String(l.reason||""),zScore:typeof l.zScore=="number"?l.zScore:null,lower:typeof l.lower=="number"?l.lower:null,upper:typeof l.upper=="number"?l.upper:null}:null}function _e(l){const t=W(l);if(!t||typeof t!="object"||Array.isArray(t))return{method:"",threshold:0,totalSamples:0,anomalies:[],summary:"",message:""};const r=Array.isArray(t.anomalies)?t.anomalies.map(ze).filter(Boolean):[];return{method:String(t.method||""),threshold:k(t.threshold,0),totalSamples:k(t.totalSamples,0),anomalies:r,summary:t.summary?String(t.summary):"",message:t.message?String(t.message):""}}function Ae(l,t=0){if(!l||typeof l!="object")return null;const r=l.runId||"";return r?{key:r,runId:r,objective:String(l.objective||""),iterations:k(l.iterations,0),paramSpace:l.paramSpace??null,bestParams:l.bestParams??null,bestScore:k(l.bestScore,0),status:String(l.status||"complete").toLowerCase(),createdAt:l.createdAt??null,completedAt:l.completedAt??null,analytics:l.analytics??null,errorMessage:l.errorMessage??"",_idx:t}:null}function ge(l){const t=W(l);return Array.isArray(t)?t.map(Ae).filter(Boolean):[]}function xe(l){const t=W(l);return!t||typeof t!="object"||Array.isArray(t)?null:Ae(t,0)}function ke(l){const t=W(l);if(!t||typeof t!="object"||Array.isArray(t))return null;const r=t.reputationDistribution||{};return{analyticsId:String(t.analyticsId||""),runId:String(t.runId||""),reputationDistribution:{buckets:Array.isArray(r.buckets)?r.buckets.filter(e=>e&&typeof e=="object").map(e=>({label:String(e.label||""),count:k(e.count,0),min:typeof e.min=="number"?e.min:null,max:typeof e.max=="number"?e.max:null})):[],mean:typeof r.mean=="number"?r.mean:null,stdDev:typeof r.stdDev=="number"?r.stdDev:null},anomalies:t.anomalies&&typeof t.anomalies=="object"?{method:String(t.anomalies.method||""),totalSamples:k(t.anomalies.totalSamples,0),anomalies:Array.isArray(t.anomalies.anomalies)?t.anomalies.anomalies.map(ze).filter(Boolean):[],summary:t.anomalies.summary?String(t.anomalies.summary):"",message:t.anomalies.message?String(t.anomalies.message):""}:{method:"",totalSamples:0,anomalies:[],summary:"",message:""},recommendations:Array.isArray(t.recommendations)?t.recommendations.filter(e=>typeof e=="string"):[]}}const ot={totalRuns:0,activeRuns:0,maxConcurrentOptimizations:0,byStatus:{},byObjective:{},observations:{totalObservations:0,totalDids:0},bestScoreEver:0};function he(l){const t=JSON.parse(JSON.stringify(ot));for(const e of Oe)t.byStatus[e]=0;for(const e of Se)t.byObjective[e]=0;const r=W(l);if(!r||typeof r!="object"||Array.isArray(r))return t;if(t.totalRuns=k(r.totalRuns,0),t.activeRuns=k(r.activeRuns,0),t.maxConcurrentOptimizations=k(r.maxConcurrentOptimizations,0),t.bestScoreEver=k(r.bestScoreEver,0),r.byStatus&&typeof r.byStatus=="object")for(const[e,w]of Object.entries(r.byStatus))typeof w=="number"&&Number.isFinite(w)&&(t.byStatus[e]=w);if(r.byObjective&&typeof r.byObjective=="object")for(const[e,w]of Object.entries(r.byObjective))typeof w=="number"&&Number.isFinite(w)&&(t.byObjective[e]=w);return r.observations&&typeof r.observations=="object"&&(t.observations.totalObservations=k(r.observations.totalObservations,0),t.observations.totalDids=k(r.observations.totalDids,0)),t}function at(l){if(l==null||l==="")return"—";const t=typeof l=="number"?new Date(l):new Date(String(l));return isNaN(t.getTime())?String(l):t.toLocaleString("zh-CN",{hour12:!1})}const nt={__name:"Reputation",setup(l,{expose:t}){t();const{t:r}=fe(),e=ye(),w=be.PRESENTED_IMAGE_SIMPLE,Q=_(!1),R=_(!1),q=_(!1),U=_(!1),A=_(!1),O=_([]),z=_([]),V=_({totalRuns:0,activeRuns:0,maxConcurrentOptimizations:0,byStatus:{},byObjective:{},observations:{totalObservations:0,totalDids:0},bestScoreEver:0}),P=_({noDb:!1,error:""}),X=_("scores"),E=_("none"),Z=_(!1),Y=_(!1),j=_(!1),H=_(!1),h=te({did:"",score:.8,kind:"generic",weight:1}),S=te({objective:"accuracy",iterations:50}),T=te({method:"z_score",threshold:2.5,decay:"none"}),D=_(null),I=_(null),B=_(null),J=se(()=>[{title:r("reputation.scoreColumns.rank"),key:"rank",width:"60px"},{title:r("reputation.scoreColumns.did"),key:"did"},{title:r("reputation.scoreColumns.score"),key:"score",width:"220px"},{title:r("reputation.scoreColumns.observations"),key:"observations",width:"100px"},{title:r("reputation.scoreColumns.weightTotal"),key:"weightTotal",width:"100px"}]),oe=se(()=>[{title:r("reputation.runColumns.runId"),key:"runId",width:"140px"},{title:r("reputation.runColumns.objective"),key:"objective",width:"140px"},{title:r("reputation.runColumns.iterations"),key:"iterations",width:"80px"},{title:r("reputation.runColumns.bestScore"),key:"bestScore",width:"110px"},{title:r("reputation.runColumns.status"),key:"status",width:"100px"},{title:r("reputation.runColumns.createdAt"),key:"createdAt",width:"160px"},{title:r("reputation.runColumns.action"),key:"action",width:"160px"}]);function ae(i){const c=`reputation.decay.${i}`,y=r(c);return y===c?i:y}function $(i){const c=`reputation.kind.${i}`,y=r(c);return y===c?i:y}function ee(i){const c=`reputation.objective.${i}`,y=r(c);return y===c?i:y}function C(i){return{accuracy:"blue",fairness:"green",resilience:"purple",convergence_speed:"orange"}[i]||"default"}function ne(i){return{accuracy:"#1677ff",fairness:"#52c41a",resilience:"#722ed1",convergence_speed:"#fa8c16"}[i]||"#888"}function re(i){const c=`reputation.objectiveDesc.${i}`,y=r(c);return y===c?"":y}function a(i){const c=`reputation.status.${i}`,y=r(c);return y===c?i:y}function b(i){return{running:"processing",complete:"blue",applied:"green",failed:"red",cancelled:"default"}[i]||"default"}function K(i){return{running:"#1677ff",complete:"#13c2c2",applied:"#52c41a",failed:"#ff4d4f",cancelled:"#888"}[i]||"#888"}function Re(i){return i===0?"gold":i===1?"silver":i===2?"bronze":""}function we(i){return i>=.8?"#52c41a":i>=.5?"#1677ff":i>=.3?"#faad14":"#ff4d4f"}function je(i,c){return c?Math.round(i/c*100):0}function Ce(i){const c=I.value?.reputationDistribution.buckets.reduce((y,M)=>y+M.count,0)||0;return c?Math.round(i.count/c*100):0}function Te(i){if(typeof i=="string")return i;try{return JSON.stringify(i,null,2)}catch{return String(i)}}async function G(){Q.value=!0,P.value={noDb:!1,error:""};try{const[i,c,y]=await Promise.all([e.execute(`reputation list --decay ${E.value} --json`,1e4).catch(()=>({output:""})),e.execute("reputation runs --limit 50 --json",1e4).catch(()=>({output:""})),e.execute("reputation stats-v2 --json",8e3).catch(()=>({output:""}))]),M=[i,c,y].map(le=>N(le.output)).find(le=>le.noDb);M&&(P.value=M),O.value=ce(i.output),z.value=ge(c.output),V.value=he(y.output)}catch(i){g.error(r("reputation.messages.loadFailed",{err:i?.message||i}))}finally{Q.value=!1}}async function De(){try{const{output:i}=await e.execute(`reputation list --decay ${E.value} --json`,1e4),c=N(i);if(c.noDb){P.value=c;return}O.value=ce(i)}catch(i){g.error(r("reputation.messages.loadScoresFailed",{err:i?.message||i}))}}async function Fe(){if(!h.did.trim()){g.warning(r("reputation.messages.didRequired"));return}if(h.score<0||h.score>1){g.warning(r("reputation.messages.scoreRange"));return}R.value=!0;try{const i=[`reputation observe "${h.did.trim().replace(/"/g,'\\"')}"`,String(h.score),`-k ${h.kind}`,`-w ${h.weight}`,"--json"],{output:c}=await e.execute(i.join(" "),1e4);if(N(c).noDb){g.error(r("reputation.messages.needInit"));return}if(!/"did"/.test(c)){g.error(r("reputation.messages.observeFailed",{err:c.slice(0,120)}));return}g.success(r("reputation.messages.observeOk")),Z.value=!1,ue(),await G()}catch(i){g.error(r("reputation.messages.observeFailed",{err:i?.message||i}))}finally{R.value=!1}}async function Ee(){q.value=!0;try{const i=["reputation optimize",`-o ${S.objective}`,`-i ${S.iterations}`,"--json"],{output:c}=await e.execute(i.join(" "),6e4);if(N(c).noDb){g.error(r("reputation.messages.needInit"));return}const M=xe(c);if(!M){g.error(r("reputation.messages.optimizeFailed",{err:c.slice(0,120)}));return}Y.value=!1,g.success(r("reputation.messages.optimizeOk",{score:M.bestScore.toFixed(4)})),await G(),D.value=M,H.value=!0,await ie()}catch(i){g.error(r("reputation.messages.optimizeFailed",{err:i?.message||i}))}finally{q.value=!1}}async function Ie(i){ve.confirm({title:r("reputation.applyConfirm.title"),content:r("reputation.applyConfirm.content",{runId:i.runId.slice(0,12)}),okText:r("reputation.applyConfirm.ok"),cancelText:r("reputation.applyConfirm.cancel"),onOk:async()=>{try{const{output:c}=await e.execute(`reputation apply ${i.runId}`,8e3);if(N(c).noDb){g.error(r("reputation.messages.needInit"));return}if(/Failed|Error/i.test(c)&&!/Applied/i.test(c)){g.error(r("reputation.messages.applyFailed",{err:c.slice(0,120)}));return}g.success(r("reputation.messages.applyOk")),await G()}catch(c){g.error(r("reputation.messages.applyFailed",{err:c?.message||c}))}}})}async function Me(i){D.value=i,I.value=null,H.value=!0,await ie()}async function ie(){if(D.value){A.value=!0;try{const{output:i}=await e.execute(`reputation analytics ${D.value.runId} --json`,8e3);if(N(i).noDb)return;I.value=ke(i)}catch{}finally{A.value=!1}}}function Le(){B.value=null,j.value=!0}async function Ne(){U.value=!0;try{const i=["reputation anomalies",`-m ${T.method}`,`-t ${T.threshold}`,`-d ${T.decay}`,"--json"],{output:c}=await e.execute(i.join(" "),1e4);if(N(c).noDb){g.error(r("reputation.messages.needInit"));return}B.value=_e(c)}catch(i){g.error(r("reputation.messages.detectFailed",{err:i?.message||i}))}finally{U.value=!1}}function ue(){h.did="",h.score=.8,h.kind="generic",h.weight=1}me(G);const de={t:r,ws:e,EMPTY_IMG:w,loading:Q,observing:R,optimizing:q,detectingAnomalies:U,loadingAnalytics:A,scores:O,runs:z,stats:V,errorState:P,activeTab:X,decayFilter:E,showObserveModal:Z,showOptimizeModal:Y,showAnomaliesModal:j,showAnalyticsModal:H,observeForm:h,optimizeForm:S,anomalyForm:T,currentRun:D,currentAnalytics:I,anomalyResult:B,scoreColumns:J,runColumns:oe,decayLabel:ae,kindLabel:$,objectiveLabel:ee,objectiveColor:C,objectiveBarColor:ne,objectiveDesc:re,statusLabel:a,statusColor:b,statusBarColor:K,rankClass:Re,scoreColor:we,pctOfTotal:je,bucketPct:Ce,formatParams:Te,loadAll:G,loadScores:De,submitObservation:Fe,submitOptimization:Ee,applyRun:Ie,viewRunAnalytics:Me,loadAnalyticsForCurrentRun:ie,openAnomaliesModal:Le,runAnomalyDetection:Ne,resetObserveForm:ue,ref:_,onMounted:me,reactive:te,computed:se,get useI18n(){return fe},get ReloadOutlined(){return Qe},get PlusOutlined(){return Ge},get WarningOutlined(){return He},get ThunderboltOutlined(){return Ze},get UserOutlined(){return qe},get EyeOutlined(){return We},get ExperimentOutlined(){return Ke},get LoadingOutlined(){return Je},get TrophyOutlined(){return Ye},get ArrowRightOutlined(){return Ve},get message(){return g},get Modal(){return ve},get Empty(){return be},get useWsStore(){return ye},get parseScores(){return ce},get parseAnomalies(){return _e},get parseRun(){return xe},get parseRuns(){return ge},get parseAnalytics(){return ke},get parseStatsV2(){return he},get detectReputationError(){return N},get formatReputationTime(){return at},get OPTIMIZATION_OBJECTIVES(){return Se},get DECAY_MODELS(){return Xe},get ANOMALY_METHODS(){return $e},get RUN_STATUSES(){return Oe},get OBSERVATION_KINDS(){return et}};return Object.defineProperty(de,"__isScriptSetup",{enumerable:!1,value:!0}),de}},rt={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},it={class:"page-title"},lt={class:"page-sub"},st={class:"filter-bar"},ct={style:{color:"var(--text-secondary)","font-size":"12px"}},ut={key:1,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},dt={key:3,style:{color:"var(--text-secondary)"}},mt={key:4,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},pt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},ft={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},yt={key:2,style:{color:"var(--text-secondary)"}},bt={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},vt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},_t={style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"12px"}},gt={style:{color:"var(--text-muted)","font-size":"11px","margin-top":"4px"}},xt={style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"12px"}},kt={style:{"padding-top":"8px"}},ht={style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"12px"}},St={key:1},Ot={style:{"font-family":"monospace","font-size":"12px",color:"var(--text-primary)"}},zt={style:{"margin-left":"8px",color:"var(--text-secondary)","font-size":"12px"}},At={key:0,style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"11px"}},Rt={key:0,style:{"padding-top":"8px"}},wt={class:"params-pre"},jt={style:{color:"#ff4d4f"}},Ct={key:0,style:{"margin-top":"16px"}},Tt={style:{color:"var(--text-primary)","font-size":"13px",margin:"0 0 10px"}},Dt={class:"bucket-label"},Ft={key:0,style:{"margin-top":"8px",color:"var(--text-secondary)","font-size":"12px"}},Et={key:0,style:{"margin-left":"12px"}};function It(l,t,r,e,w,Q){const R=m("a-button"),q=m("a-space"),U=m("a-alert"),A=m("a-statistic"),O=m("a-card"),z=m("a-col"),V=m("a-row"),P=m("a-radio-button"),X=m("a-radio-group"),E=m("a-progress"),Z=m("a-table"),Y=m("a-tab-pane"),j=m("a-tag"),H=m("a-tabs"),h=m("a-input"),S=m("a-form-item"),T=m("a-input-number"),D=m("a-select-option"),I=m("a-select"),B=m("a-form"),J=m("a-modal"),oe=m("a-divider"),ae=m("a-empty"),$=m("a-list-item"),ee=m("a-list"),C=m("a-descriptions-item"),ne=m("a-descriptions"),re=m("a-spin");return u(),p("div",null,[v("div",rt,[v("div",null,[v("h2",it,s(e.t("reputation.title")),1),v("p",lt,s(e.t("reputation.subtitle")),1)]),o(q,null,{default:n(()=>[o(R,{loading:e.loading,onClick:e.loadAll},{icon:n(()=>[o(e.ReloadOutlined)]),default:n(()=>[f(" "+s(e.t("reputation.refresh")),1)]),_:1},8,["loading"]),o(R,{onClick:e.openAnomaliesModal},{icon:n(()=>[o(e.WarningOutlined)]),default:n(()=>[f(" "+s(e.t("reputation.actions.anomalies")),1)]),_:1}),o(R,{type:"primary",onClick:t[0]||(t[0]=a=>e.showOptimizeModal=!0)},{icon:n(()=>[o(e.ThunderboltOutlined)]),default:n(()=>[f(" "+s(e.t("reputation.actions.optimize")),1)]),_:1})]),_:1})]),d(" noDb banner "),e.errorState.noDb?(u(),x(U,{key:0,type:"info","show-icon":"",message:e.t("reputation.noDb.message"),description:e.t("reputation.noDb.description"),style:{"margin-bottom":"16px"}},null,8,["message","description"])):d("v-if",!0),d(" Stat cards "),o(V,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:n(()=>[o(z,{xs:12,sm:8,lg:5},{default:n(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(A,{title:e.t("reputation.stats.trackedDids"),value:e.stats.observations.totalDids,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:n(()=>[o(e.UserOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(z,{xs:12,sm:8,lg:5},{default:n(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(A,{title:e.t("reputation.stats.totalObservations"),value:e.stats.observations.totalObservations,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:n(()=>[o(e.EyeOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(z,{xs:12,sm:8,lg:5},{default:n(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(A,{title:e.t("reputation.stats.optimizationRuns"),value:e.stats.totalRuns,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:n(()=>[o(e.ExperimentOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(z,{xs:12,sm:8,lg:5},{default:n(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(A,{title:e.t("reputation.stats.active"),value:e.stats.activeRuns,"value-style":{color:e.stats.activeRuns>0?"#1677ff":"#888",fontSize:"20px"},suffix:`/ ${e.stats.maxConcurrentOptimizations}`},{prefix:n(()=>[o(e.LoadingOutlined)]),_:1},8,["title","value","value-style","suffix"])]),_:1})]),_:1}),o(z,{xs:24,sm:8,lg:4},{default:n(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(A,{title:e.t("reputation.stats.bestEver"),value:e.stats.bestScoreEver,precision:3,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:n(()=>[o(e.TrophyOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),d(" Tabs "),o(H,{activeKey:e.activeTab,"onUpdate:activeKey":t[3]||(t[3]=a=>e.activeTab=a),class:"reputation-tabs"},{default:n(()=>[d(" ── Scores tab ──────────────────────────────────────────── "),o(Y,{key:"scores",tab:e.t("reputation.tabs.scores")},{default:n(()=>[v("div",st,[v("span",ct,s(e.t("reputation.filter.decayLabel")),1),o(X,{value:e.decayFilter,"onUpdate:value":t[1]||(t[1]=a=>e.decayFilter=a),size:"small","button-style":"solid",onChange:e.loadScores},{default:n(()=>[(u(!0),p(F,null,L(e.DECAY_MODELS,a=>(u(),x(P,{key:a,value:a},{default:n(()=>[f(s(e.decayLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),o(R,{size:"small",onClick:t[2]||(t[2]=a=>e.showObserveModal=!0)},{icon:n(()=>[o(e.PlusOutlined)]),default:n(()=>[f(" "+s(e.t("reputation.filter.addObservation")),1)]),_:1})]),o(Z,{columns:e.scoreColumns,"data-source":e.scores,pagination:{pageSize:20,showTotal:a=>e.t("reputation.totals.dids",{count:a})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:n(({column:a,record:b,index:K})=>[a.key==="rank"?(u(),p("span",{key:0,class:Ue(["rank-pill",e.rankClass(K)])},s(K+1),3)):d("v-if",!0),a.key==="did"?(u(),p("span",ut,s(b.did),1)):d("v-if",!0),a.key==="score"?(u(),x(E,{key:2,percent:Math.round(b.score*100),"stroke-color":e.scoreColor(b.score),size:"small",format:()=>b.score.toFixed(4)},null,8,["percent","stroke-color","format"])):d("v-if",!0),a.key==="observations"?(u(),p("span",dt,s(b.observations),1)):d("v-if",!0),a.key==="weightTotal"?(u(),p("span",mt,s(b.weightTotal.toFixed(2)),1)):d("v-if",!0)]),emptyText:n(()=>[v("div",pt,[o(e.UserOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),f(" "+s(e.t("reputation.empty.scores")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),d(" ── Runs tab ────────────────────────────────────────────── "),o(Y,{key:"runs",tab:e.t("reputation.tabs.runs")},{default:n(()=>[o(Z,{columns:e.runColumns,"data-source":e.runs,pagination:{pageSize:20,showTotal:a=>e.t("reputation.totals.rows",{count:a})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:n(({column:a,record:b})=>[a.key==="runId"?(u(),p("span",ft,s(b.runId.slice(0,12)),1)):d("v-if",!0),a.key==="objective"?(u(),x(j,{key:1,color:e.objectiveColor(b.objective),style:{"font-family":"monospace"}},{default:n(()=>[f(s(e.objectiveLabel(b.objective)),1)]),_:2},1032,["color"])):d("v-if",!0),a.key==="iterations"?(u(),p("span",yt,s(b.iterations),1)):d("v-if",!0),a.key==="bestScore"?(u(),p("span",{key:3,style:pe({color:e.scoreColor(b.bestScore),fontWeight:500,fontFamily:"monospace"})},s(b.bestScore.toFixed(4)),5)):d("v-if",!0),a.key==="status"?(u(),x(j,{key:4,color:e.statusColor(b.status)},{default:n(()=>[f(s(e.statusLabel(b.status)),1)]),_:2},1032,["color"])):d("v-if",!0),a.key==="createdAt"?(u(),p("span",bt,s(e.formatReputationTime(b.createdAt)),1)):d("v-if",!0),a.key==="action"?(u(),p(F,{key:6},[o(R,{size:"small",type:"link",onClick:K=>e.viewRunAnalytics(b)},{default:n(()=>[f(s(e.t("reputation.rowActions.analyze")),1)]),_:1},8,["onClick"]),b.status==="complete"?(u(),x(R,{key:0,size:"small",type:"link",style:{color:"#52c41a"},onClick:K=>e.applyRun(b)},{default:n(()=>[f(s(e.t("reputation.rowActions.apply")),1)]),_:1},8,["onClick"])):d("v-if",!0)],64)):d("v-if",!0)]),emptyText:n(()=>[v("div",vt,[o(e.ExperimentOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),f(" "+s(e.t("reputation.empty.runs")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),d(" ── Breakdown tab ───────────────────────────────────────── "),o(Y,{key:"breakdown",tab:e.t("reputation.tabs.breakdown")},{default:n(()=>[o(V,{gutter:[16,16]},{default:n(()=>[o(z,{xs:24,lg:12},{default:n(()=>[o(O,{title:e.t("reputation.breakdown.byStatus"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[(u(!0),p(F,null,L(e.RUN_STATUSES,a=>(u(),p("div",{key:a,class:"bd-row"},[o(j,{color:e.statusColor(a),style:{"min-width":"80px","text-align":"center"}},{default:n(()=>[f(s(e.statusLabel(a)),1)]),_:2},1032,["color"]),o(E,{percent:e.pctOfTotal(e.stats.byStatus[a]||0,e.stats.totalRuns),"stroke-color":e.statusBarColor(a),format:()=>`${e.stats.byStatus[a]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1},8,["title"])]),_:1}),o(z,{xs:24,lg:12},{default:n(()=>[o(O,{title:e.t("reputation.breakdown.byObjective"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[(u(!0),p(F,null,L(e.OPTIMIZATION_OBJECTIVES,a=>(u(),p("div",{key:a,class:"bd-row"},[o(j,{color:e.objectiveColor(a),style:{"min-width":"100px","text-align":"center","font-family":"monospace"}},{default:n(()=>[f(s(e.objectiveLabel(a)),1)]),_:2},1032,["color"]),o(E,{percent:e.pctOfTotal(e.stats.byObjective[a]||0,e.stats.totalRuns),"stroke-color":e.objectiveBarColor(a),format:()=>`${e.stats.byObjective[a]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1},8,["title"])]),_:1})]),_:1})]),_:1},8,["tab"])]),_:1},8,["activeKey"]),d(" ── Add observation modal ──────────────────────────────── "),o(J,{open:e.showObserveModal,"onUpdate:open":t[8]||(t[8]=a=>e.showObserveModal=a),title:e.t("reputation.observe.title"),"confirm-loading":e.observing,width:540,"ok-text":e.t("reputation.observe.ok"),"cancel-text":e.t("common.cancel"),onOk:e.submitObservation,onCancel:e.resetObserveForm},{default:n(()=>[o(B,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:n(()=>[o(S,{label:e.t("reputation.observe.didLabel"),required:""},{default:n(()=>[o(h,{value:e.observeForm.did,"onUpdate:value":t[4]||(t[4]=a=>e.observeForm.did=a),placeholder:e.t("reputation.observe.didPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(S,{label:e.t("reputation.observe.scoreLabel"),required:""},{default:n(()=>[o(T,{value:e.observeForm.score,"onUpdate:value":t[5]||(t[5]=a=>e.observeForm.score=a),min:0,max:1,step:.05,style:{width:"160px"}},null,8,["value"]),v("span",_t,s(e.t("reputation.observe.scoreRange")),1)]),_:1},8,["label"]),o(S,{label:e.t("reputation.observe.kindLabel")},{default:n(()=>[o(I,{value:e.observeForm.kind,"onUpdate:value":t[6]||(t[6]=a=>e.observeForm.kind=a)},{default:n(()=>[(u(!0),p(F,null,L(e.OBSERVATION_KINDS,a=>(u(),x(D,{key:a,value:a},{default:n(()=>[f(s(e.kindLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),o(S,{label:e.t("reputation.observe.weightLabel")},{default:n(()=>[o(T,{value:e.observeForm.weight,"onUpdate:value":t[7]||(t[7]=a=>e.observeForm.weight=a),min:.1,step:.1,style:{width:"120px"}},null,8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),d(" ── Optimize modal ─────────────────────────────────────── "),o(J,{open:e.showOptimizeModal,"onUpdate:open":t[11]||(t[11]=a=>e.showOptimizeModal=a),title:e.t("reputation.optimize.title"),"confirm-loading":e.optimizing,width:540,"ok-text":e.t("reputation.optimize.ok"),"cancel-text":e.t("common.cancel"),onOk:e.submitOptimization},{default:n(()=>[o(B,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:n(()=>[o(S,{label:e.t("reputation.optimize.objectiveLabel"),required:""},{default:n(()=>[o(I,{value:e.optimizeForm.objective,"onUpdate:value":t[9]||(t[9]=a=>e.optimizeForm.objective=a)},{default:n(()=>[(u(!0),p(F,null,L(e.OPTIMIZATION_OBJECTIVES,a=>(u(),x(D,{key:a,value:a},{default:n(()=>[f(s(e.objectiveLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),v("div",gt,s(e.objectiveDesc(e.optimizeForm.objective)),1)]),_:1},8,["label"]),o(S,{label:e.t("reputation.optimize.iterationsLabel")},{default:n(()=>[o(T,{value:e.optimizeForm.iterations,"onUpdate:value":t[10]||(t[10]=a=>e.optimizeForm.iterations=a),min:1,max:1e3,step:10,style:{width:"160px"}},null,8,["value"]),v("span",xt,s(e.t("reputation.optimize.iterationsRange")),1)]),_:1},8,["label"])]),_:1}),o(U,{type:"info","show-icon":"",message:e.t("reputation.optimize.syncMessage"),description:e.t("reputation.optimize.syncDescription"),style:{"margin-top":"12px"}},null,8,["message","description"])]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),d(" ── Anomaly detection modal ────────────────────────────── "),o(J,{open:e.showAnomaliesModal,"onUpdate:open":t[15]||(t[15]=a=>e.showAnomaliesModal=a),title:e.t("reputation.anomaly.title"),width:640,footer:null},{default:n(()=>[v("div",kt,[o(B,{"label-col":{span:5},"wrapper-col":{span:19}},{default:n(()=>[o(S,{label:e.t("reputation.anomaly.methodLabel")},{default:n(()=>[o(X,{value:e.anomalyForm.method,"onUpdate:value":t[12]||(t[12]=a=>e.anomalyForm.method=a),"button-style":"solid"},{default:n(()=>[(u(!0),p(F,null,L(e.ANOMALY_METHODS,a=>(u(),x(P,{key:a,value:a},{default:n(()=>[f(s(a==="z_score"?e.t("reputation.anomaly.zScoreLabel"):e.t("reputation.anomaly.iqrLabel")),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),o(S,{label:e.t("reputation.anomaly.thresholdLabel")},{default:n(()=>[o(T,{value:e.anomalyForm.threshold,"onUpdate:value":t[13]||(t[13]=a=>e.anomalyForm.threshold=a),min:.5,step:.1,style:{width:"120px"}},null,8,["value"]),v("span",ht,s(e.t("reputation.anomaly.thresholdHint")),1)]),_:1},8,["label"]),o(S,{label:e.t("reputation.anomaly.decayLabel")},{default:n(()=>[o(I,{value:e.anomalyForm.decay,"onUpdate:value":t[14]||(t[14]=a=>e.anomalyForm.decay=a),style:{width:"200px"}},{default:n(()=>[(u(!0),p(F,null,L(e.DECAY_MODELS,a=>(u(),x(D,{key:a,value:a},{default:n(()=>[f(s(e.decayLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),o(S,{"wrapper-col":{offset:5,span:19}},{default:n(()=>[o(R,{type:"primary",loading:e.detectingAnomalies,onClick:e.runAnomalyDetection},{icon:n(()=>[o(e.WarningOutlined)]),default:n(()=>[f(" "+s(e.t("reputation.anomaly.start")),1)]),_:1},8,["loading"])]),_:1})]),_:1}),o(oe),e.anomalyResult?(u(),p("div",St,[o(V,{gutter:12,style:{"margin-bottom":"12px"}},{default:n(()=>[o(z,{span:8},{default:n(()=>[o(A,{title:e.t("reputation.anomaly.totalSamples"),value:e.anomalyResult.totalSamples,"value-style":{fontSize:"16px"}},null,8,["title","value"])]),_:1}),o(z,{span:8},{default:n(()=>[o(A,{title:e.t("reputation.anomaly.threshold"),value:e.anomalyResult.threshold,precision:2,"value-style":{fontSize:"16px"}},null,8,["title","value"])]),_:1}),o(z,{span:8},{default:n(()=>[o(A,{title:e.t("reputation.anomaly.anomalies"),value:e.anomalyResult.anomalies.length,"value-style":{color:e.anomalyResult.anomalies.length>0?"#ff4d4f":"#52c41a",fontSize:"16px"}},null,8,["title","value","value-style"])]),_:1})]),_:1}),e.anomalyResult.message?(u(),x(U,{key:0,message:e.anomalyResult.message,type:"warning","show-icon":"",style:{"margin-bottom":"12px"}},null,8,["message"])):d("v-if",!0),e.anomalyResult.anomalies.length?(u(),x(ee,{key:1,size:"small","data-source":e.anomalyResult.anomalies},{renderItem:n(({item:a})=>[o($,null,{default:n(()=>[v("span",Ot,s(a.did),1),o(j,{color:"red",style:{"margin-left":"8px"}},{default:n(()=>[f(s(e.t("reputation.anomaly.scoreTag",{score:a.score.toFixed(4)})),1)]),_:2},1024),v("span",zt,s(a.reason),1),a.zScore!==null?(u(),p("span",At,s(e.t("reputation.anomaly.zNote",{value:a.zScore.toFixed(2)})),1)):d("v-if",!0)]),_:2},1024)]),_:1},8,["data-source"])):d("v-if",!0)])):(u(),x(ae,{key:0,description:e.t("reputation.anomaly.notDetected"),image:e.EMPTY_IMG},null,8,["description","image"]))])]),_:1},8,["open","title"]),d(" ── Run analytics / details modal ──────────────────────── "),o(J,{open:e.showAnalyticsModal,"onUpdate:open":t[16]||(t[16]=a=>e.showAnalyticsModal=a),title:e.t("reputation.analytics.title",{runId:e.currentRun?.runId?.slice(0,12)||""}),width:780,footer:null},{default:n(()=>[e.currentRun?(u(),p("div",Rt,[o(ne,{column:2,size:"small",bordered:""},{default:n(()=>[o(C,{label:e.t("reputation.analytics.objective")},{default:n(()=>[o(j,{color:e.objectiveColor(e.currentRun.objective)},{default:n(()=>[f(s(e.objectiveLabel(e.currentRun.objective)),1)]),_:1},8,["color"])]),_:1},8,["label"]),o(C,{label:e.t("reputation.analytics.status")},{default:n(()=>[o(j,{color:e.statusColor(e.currentRun.status)},{default:n(()=>[f(s(e.statusLabel(e.currentRun.status)),1)]),_:1},8,["color"])]),_:1},8,["label"]),o(C,{label:e.t("reputation.analytics.iterations")},{default:n(()=>[f(s(e.currentRun.iterations),1)]),_:1},8,["label"]),o(C,{label:e.t("reputation.analytics.bestScore")},{default:n(()=>[v("span",{style:pe({color:e.scoreColor(e.currentRun.bestScore),fontWeight:500,fontFamily:"monospace"})},s(e.currentRun.bestScore.toFixed(4)),5)]),_:1},8,["label"]),o(C,{label:e.t("reputation.analytics.createdAt")},{default:n(()=>[f(s(e.formatReputationTime(e.currentRun.createdAt)),1)]),_:1},8,["label"]),e.currentRun.completedAt?(u(),x(C,{key:0,label:e.t("reputation.analytics.completedAt")},{default:n(()=>[f(s(e.formatReputationTime(e.currentRun.completedAt)),1)]),_:1},8,["label"])):d("v-if",!0),e.currentRun.bestParams?(u(),x(C,{key:1,label:e.t("reputation.analytics.bestParams"),span:2},{default:n(()=>[v("pre",wt,s(e.formatParams(e.currentRun.bestParams)),1)]),_:1},8,["label"])):d("v-if",!0),e.currentRun.errorMessage?(u(),x(C,{key:2,label:e.t("reputation.analytics.errorMessage"),span:2},{default:n(()=>[v("span",jt,s(e.currentRun.errorMessage),1)]),_:1},8,["label"])):d("v-if",!0)]),_:1}),o(re,{spinning:e.loadingAnalytics},{default:n(()=>[e.currentAnalytics?(u(),p("div",Ct,[v("h4",Tt,s(e.t("reputation.analytics.distributionTitle")),1),o(O,{size:"small",style:{"margin-bottom":"12px"}},{default:n(()=>[(u(!0),p(F,null,L(e.currentAnalytics.reputationDistribution.buckets,a=>(u(),p("div",{key:a.label,class:"bucket-row"},[v("span",Dt,s(a.label),1),o(E,{percent:e.bucketPct(a),"stroke-color":a.count>0?"#1677ff":"#d9d9d9",format:()=>`${a.count}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128)),e.currentAnalytics.reputationDistribution.mean!==null?(u(),p("div",Ft,[f(s(e.t("reputation.analytics.mean",{value:e.currentAnalytics.reputationDistribution.mean.toFixed(4)}))+" ",1),e.currentAnalytics.reputationDistribution.stdDev!==null?(u(),p("span",Et,s(e.t("reputation.analytics.stdDev",{value:e.currentAnalytics.reputationDistribution.stdDev.toFixed(4)})),1)):d("v-if",!0)])):d("v-if",!0)]),_:1}),e.currentAnalytics.recommendations.length?(u(),x(O,{key:0,title:e.t("reputation.analytics.recommendations"),size:"small"},{default:n(()=>[o(ee,{size:"small","data-source":e.currentAnalytics.recommendations},{renderItem:n(({item:a})=>[o($,null,{default:n(()=>[o(e.ArrowRightOutlined,{style:{color:"#faad14","margin-right":"8px"}}),f(" "+s(a),1)]),_:2},1024)]),_:1},8,["data-source"])]),_:1},8,["title"])):d("v-if",!0)])):d("v-if",!0)]),_:1},8,["spinning"])])):d("v-if",!0)]),_:1},8,["open","title"])])}const ro=Be(nt,[["render",It],["__scopeId","data-v-c4829a4e"],["__file","/tmp/cc-web-panel-1Koio1/repo/packages/web-panel/src/views/Reputation.vue"]]);export{ro as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as u,J as g,U as m,R as i,c as r,K as t,V as f,S as k,r as v,o as se,a as ie,b as j,P as d,Q as _,a2 as xe,F as O,Z as L}from"./vendor-Bn1JzzAn.js";import{Y as ke,t as ae,_ as Se,b as ce,u as de,E as ue,d as F}from"./index-DPguq3X7.js";import{at as Ce,l as Te,a4 as Ne,a_ as Ae,a9 as Oe,a2 as ze,$ as we,k as Ee,R as Me}from"./icons-DEmcnxBf.js";const Ie=Object.freeze(["bm25","vector","hybrid"]);function Fe(n,l=0){return typeof n=="number"&&Number.isFinite(n)?n:l}function Re(n){if(Array.isArray(n))return n.filter(l=>typeof l=="string");if(typeof n!="string")return[];try{const l=JSON.parse(n);if(Array.isArray(l))return l.filter(c=>typeof c=="string")}catch{}return[]}function G(n){if(!n)return{noDb:!1,error:""};const l=ke(n),c=/Database not available/i.test(l);return{noDb:c,error:c?"Database not available":""}}function De(n,l=0){if(!n||typeof n!="object")return null;const c=n.id||"";return c?{key:c,id:c,score:Fe(n.score,0),title:String(n.title||""),category:String(n.category||"general"),createdAt:n.created_at??n.createdAt??"",snippet:String(n.snippet||""),_idx:l}:null}function fe(n){const l=ae(n);return Array.isArray(l)?l.map(De).filter(Boolean):[]}function ye(n,l=0){if(!n||typeof n!="object")return null;const c=n.id||"";return c?{key:c,id:c,title:String(n.title||""),content:n.content??"",tags:Re(n.tags),category:String(n.category||"general"),createdAt:n.created_at??n.createdAt??"",updatedAt:n.updated_at??n.updatedAt??"",_idx:l}:null}function ge(n){const l=ae(n);return Array.isArray(l)?l.map(ye).filter(Boolean):[]}function me(n){const l=ae(n);return!l||typeof l!="object"||Array.isArray(l)?null:ye(l,0)}function _e(n){if(!Array.isArray(n)||n.length===0)return{total:0,categories:[],tags:[]};const l=new Map,c=new Map;for(const e of n){l.set(e.category,(l.get(e.category)||0)+1);for(const x of e.tags)c.set(x,(c.get(x)||0)+1)}return{total:n.length,categories:[...l.entries()].map(([e,x])=>({name:e,count:x})).sort((e,x)=>x.count-e.count),tags:[...c.entries()].map(([e,x])=>({name:e,count:x})).sort((e,x)=>x.count-e.count)}}function Le(n){if(n==null||n==="")return"—";const l=String(n),c=l.includes(" ")&&!l.includes("T")?l.replace(" ","T")+"Z":l,e=new Date(c);return isNaN(e.getTime())?l:e.toLocaleString("zh-CN",{hour12:!1})}const J="cc.web-panel.search.recent",re=8,Pe={__name:"Search",setup(n,{expose:l}){l();const{t:c}=ce(),e=de(),x=ue.PRESENTED_IMAGE_SIMPLE,q=v(!1),C=v(!1),P=v(!1),B=v(!1),z=v([]),h=v([]),A=v({noDb:!1,error:""}),T=ie({query:"",mode:"hybrid",topK:10}),Q=v(""),w=v(U()),K=v("results"),S=v(""),N=v(""),E=v(!1),M=v(null),V=j(()=>_e(z.value)),Y=j(()=>h.value.length?Math.max(...h.value.map(o=>o.score)):0),W=j(()=>[{title:c("search.noteColumns.title"),key:"title"},{title:c("search.noteColumns.category"),key:"category",width:"120px"},{title:c("search.noteColumns.tags"),key:"tags",width:"240px"},{title:c("search.noteColumns.createdAt"),key:"createdAt",width:"180px"},{title:c("search.noteColumns.action"),key:"action",width:"180px"}]),Z=j(()=>{let o=z.value;if(S.value&&(o=o.filter(s=>s.category===S.value)),N.value.trim()){const s=N.value.trim().toLowerCase();o=o.filter(y=>y.tags.some(b=>b.toLowerCase().includes(s)))}return o});function H(o){const s=`search.mode.${o}`,y=c(s);return y===s?o:y}function X(o){const s=["blue","green","purple","orange","cyan","magenta","gold","volcano"];let y=0;for(let b=0;b<(o||"").length;b++)y=y*31+o.charCodeAt(b)>>>0;return s[y%s.length]}function $(o){return o>=.7?"#52c41a":o>=.5?"#1677ff":o>=.3?"#faad14":"#ff4d4f"}function R(o){return String(o).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function I(o,s){if(!s||!o)return R(o);const y=s.split(/\s+/).filter(Boolean);let b=R(o);for(const ve of y){const be=new RegExp(`(${ve.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")})`,"gi");b=b.replace(be,"<mark>$1</mark>")}return b}function ee(o,s){return s?I(o,s):R(o)}function U(){try{const o=localStorage.getItem(J);if(o){const s=JSON.parse(o);if(Array.isArray(s))return s.filter(y=>typeof y=="string").slice(0,re)}}catch{}return[]}function a(o){const s=o.trim();if(!s)return;const y=[s,...w.value.filter(b=>b!==s)];w.value=y.slice(0,re);try{localStorage.setItem(J,JSON.stringify(w.value))}catch{}}function p(){w.value=[];try{localStorage.removeItem(J)}catch{}}function D(o){T.query=o,te()}async function oe(){q.value=!0,A.value={noDb:!1,error:""};try{const{output:o}=await e.execute("note list -n 500 --json",12e3).catch(()=>({output:""})),s=G(o);if(s.noDb){A.value=s,z.value=[];return}z.value=ge(o)}catch(o){F.error(c("search.messages.loadIndexFailed",{err:o?.message||o}))}finally{q.value=!1}}async function te(){const o=T.query.trim();if(!o){F.warning(c("search.messages.queryRequired"));return}P.value=!0,A.value={noDb:!1,error:""};try{const s=[`search ${ne(o)}`,`--mode ${T.mode}`,`--top-k ${T.topK||10}`,"--json"],{output:y}=await e.execute(s.join(" "),15e3),b=G(y);if(b.noDb){A.value=b,h.value=[],B.value=!0,Q.value=o;return}h.value=fe(y),Q.value=o,B.value=!0,a(o),K.value="results"}catch(s){F.error(c("search.messages.searchFailed",{err:s?.message||s}))}finally{P.value=!1}}function ne(o){return`"${String(o).replace(/"/g,'\\"')}"`}function he(o){T.query=o.title,T.mode="vector",te()}async function pe(o){E.value=!0,C.value=!0,M.value=null;try{const{output:s}=await e.execute(`note show ${o} --json`,8e3);if(G(s).noDb){F.error(c("search.messages.needInit"));return}M.value=me(s),M.value||F.error(c("search.messages.noteLoadFailed"))}catch(s){F.error(c("search.messages.loadFailed",{err:s?.message||s}))}finally{C.value=!1}}se(oe);const le={t:c,ws:e,EMPTY_IMG:x,RECENT_LS:J,RECENT_MAX:re,loadingIndex:q,loadingNote:C,searching:P,searched:B,notes:z,results:h,errorState:A,form:T,currentQuery:Q,recentQueries:w,activeTab:K,indexCategoryFilter:S,indexTagFilter:N,showNoteModal:E,currentNote:M,indexSummary:V,topScore:Y,noteColumns:W,filteredNotes:Z,modeLabel:H,categoryColor:X,scoreColor:$,escapeHtml:R,highlightSnippet:I,highlightContent:ee,loadRecent:U,pushRecent:a,clearRecent:p,rerunQuery:D,loadIndex:oe,runSearch:te,shellQuote:ne,searchSimilar:he,viewNote:pe,ref:v,computed:j,onMounted:se,reactive:ie,get useI18n(){return ce},get ReloadOutlined(){return Me},get SearchOutlined(){return Ee},get ThunderboltOutlined(){return we},get BookOutlined(){return ze},get AppstoreOutlined(){return Oe},get TagsOutlined(){return Ae},get FileTextOutlined(){return Ne},get TrophyOutlined(){return Te},get EyeOutlined(){return Ce},get message(){return F},get Empty(){return ue},get useWsStore(){return de},get parseSearchResults(){return fe},get parseNotes(){return ge},get parseNote(){return me},get buildIndexSummary(){return _e},get detectSearchError(){return G},get formatSearchTime(){return Le},get SEARCH_MODES(){return Ie}};return Object.defineProperty(le,"__isScriptSetup",{enumerable:!1,value:!0}),le}},Be={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Qe={class:"page-title"},je={class:"page-sub"},qe={key:0,class:"recent-row"},Ke={class:"recent-label"},He={class:"score-block"},Ue={class:"result-title"},Ge={style:{color:"var(--text-muted)","font-size":"11px","font-family":"monospace"}},Je={style:{"margin-left":"8px",color:"var(--text-secondary)","font-size":"11px"}},Ve={key:0,class:"result-snippet"},Ye=["innerHTML"],We={class:"filter-bar"},Ze={key:0,class:"tag-row"},Xe={class:"tag-row-label"},$e={class:"tag-count"},et={style:{color:"var(--text-primary)","font-weight":"500"}},tt={style:{color:"var(--text-muted)","font-size":"11px","font-family":"monospace","margin-top":"2px"}},rt={key:0,style:{color:"var(--text-muted)","font-size":"11px"}},at={key:3,style:{color:"var(--text-secondary)","font-size":"11px"}},ot={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},nt={key:0,style:{padding:"40px","text-align":"center"}},lt={key:1,style:{"padding-top":"8px"}},st={style:{"font-family":"monospace","font-size":"12px"}},it={key:0,style:{color:"var(--text-muted)"}},ct={style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},dt={key:0,class:"note-content"},ut=["innerHTML"];function ft(n,l,c,e,x,q){const C=u("a-button"),P=u("a-space"),B=u("a-alert"),z=u("a-input"),h=u("a-col"),A=u("a-radio-button"),T=u("a-radio-group"),Q=u("a-input-number"),w=u("a-row"),K=u("a-form"),S=u("a-tag"),N=u("a-card"),E=u("a-statistic"),M=u("a-empty"),V=u("a-progress"),Y=u("a-list-item-meta"),W=u("a-list-item"),Z=u("a-list"),H=u("a-tab-pane"),X=u("a-table"),$=u("a-tabs"),R=u("a-spin"),I=u("a-descriptions-item"),ee=u("a-descriptions"),U=u("a-modal");return d(),g("div",null,[m("div",Be,[m("div",null,[m("h2",Qe,i(e.t("search.title")),1),m("p",je,i(e.t("search.subtitle")),1)]),r(P,null,{default:t(()=>[r(C,{loading:e.loadingIndex,onClick:e.loadIndex},{icon:t(()=>[r(e.ReloadOutlined)]),default:t(()=>[_(" "+i(e.t("search.refreshIndex")),1)]),_:1},8,["loading"])]),_:1})]),f(" noDb banner "),e.errorState.noDb?(d(),k(B,{key:0,type:"info","show-icon":"",message:e.t("search.noDb.message"),description:e.t("search.noDb.description"),style:{"margin-bottom":"16px"}},null,8,["message","description"])):f("v-if",!0),f(" Search bar "),r(N,{size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"},"body-style":{padding:"14px 16px"}},{default:t(()=>[r(K,{layout:"vertical",model:e.form,onSubmit:xe(e.runSearch,["prevent"])},{default:t(()=>[r(w,{gutter:12},{default:t(()=>[r(h,{span:14},{default:t(()=>[r(z,{value:e.form.query,"onUpdate:value":l[0]||(l[0]=a=>e.form.query=a),size:"large",placeholder:e.t("search.form.queryPlaceholder"),"allow-clear":"",onPressEnter:e.runSearch},{prefix:t(()=>[r(e.SearchOutlined)]),_:1},8,["value","placeholder"])]),_:1}),r(h,{span:4},{default:t(()=>[r(T,{value:e.form.mode,"onUpdate:value":l[1]||(l[1]=a=>e.form.mode=a),size:"large","button-style":"solid"},{default:t(()=>[(d(!0),g(O,null,L(e.SEARCH_MODES,a=>(d(),k(A,{key:a,value:a},{default:t(()=>[_(i(e.modeLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1}),r(h,{span:3},{default:t(()=>[r(Q,{value:e.form.topK,"onUpdate:value":l[2]||(l[2]=a=>e.form.topK=a),min:1,max:50,placeholder:e.t("search.form.topKPlaceholder"),size:"large",style:{width:"100%"}},null,8,["value","placeholder"])]),_:1}),r(h,{span:3},{default:t(()=>[r(C,{type:"primary",size:"large",loading:e.searching,block:"",onClick:e.runSearch},{icon:t(()=>[r(e.ThunderboltOutlined)]),default:t(()=>[_(" "+i(e.t("search.form.submit")),1)]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1},8,["model"]),f(" Recent queries chips "),e.recentQueries.length?(d(),g("div",qe,[m("span",Ke,i(e.t("search.recent.label")),1),(d(!0),g(O,null,L(e.recentQueries,a=>(d(),k(S,{key:a,color:"blue",class:"recent-chip",onClick:p=>e.rerunQuery(a)},{default:t(()=>[_(i(a),1)]),_:2},1032,["onClick"]))),128)),r(C,{size:"small",type:"link",danger:"",onClick:e.clearRecent},{default:t(()=>[_(i(e.t("search.recent.clear")),1)]),_:1})])):f("v-if",!0)]),_:1}),f(" Stat cards "),r(w,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:t(()=>[r(h,{xs:12,sm:8,lg:5},{default:t(()=>[r(N,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[r(E,{title:e.t("search.stats.indexedNotes"),value:e.indexSummary.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:t(()=>[r(e.BookOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),r(h,{xs:12,sm:8,lg:5},{default:t(()=>[r(N,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[r(E,{title:e.t("search.stats.categories"),value:e.indexSummary.categories.length,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:t(()=>[r(e.AppstoreOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),r(h,{xs:12,sm:8,lg:5},{default:t(()=>[r(N,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[r(E,{title:e.t("search.stats.tags"),value:e.indexSummary.tags.length,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:t(()=>[r(e.TagsOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),r(h,{xs:12,sm:8,lg:5},{default:t(()=>[r(N,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[r(E,{title:e.t("search.stats.results"),value:e.results.length,"value-style":{color:e.results.length>0?"#52c41a":"#888",fontSize:"20px"}},{prefix:t(()=>[r(e.FileTextOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),r(h,{xs:24,sm:8,lg:4},{default:t(()=>[r(N,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[r(E,{title:e.t("search.stats.topScore"),value:e.topScore,precision:3,"value-style":{color:e.scoreColor(e.topScore),fontSize:"20px"}},{prefix:t(()=>[r(e.TrophyOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1})]),_:1}),f(" Tabs "),r($,{activeKey:e.activeTab,"onUpdate:activeKey":l[5]||(l[5]=a=>e.activeTab=a),class:"search-tabs"},{default:t(()=>[f(" ── Results tab ───────────────────────────────────────── "),r(H,{key:"results",tab:e.t("search.tabs.results")},{default:t(()=>[e.searched?e.results.length?(d(),k(Z,{key:2,"data-source":e.results,"item-layout":"vertical",size:"large"},{renderItem:t(({item:a})=>[r(W,{class:"result-row"},{actions:t(()=>[r(C,{type:"link",size:"small",onClick:p=>e.viewNote(a.id)},{icon:t(()=>[r(e.EyeOutlined)]),default:t(()=>[_(" "+i(e.t("search.results.viewFull")),1)]),_:1},8,["onClick"])]),extra:t(()=>[m("div",He,[r(V,{type:"circle",percent:Math.round(Math.min(1,a.score)*100),"stroke-color":e.scoreColor(a.score),format:()=>a.score.toFixed(3),width:60},null,8,["percent","stroke-color","format"])])]),default:t(()=>[r(Y,null,{title:t(()=>[m("span",Ue,i(a.title||e.t("search.results.noTitle")),1),r(S,{color:e.categoryColor(a.category),style:{"margin-left":"8px"}},{default:t(()=>[_(i(a.category),1)]),_:2},1032,["color"])]),description:t(()=>[m("span",Ge,i(a.id.slice(0,16)),1),m("span",Je,i(e.formatSearchTime(a.createdAt)),1)]),_:2},1024),a.snippet?(d(),g("div",Ve,[m("span",{innerHTML:e.highlightSnippet(a.snippet,e.currentQuery)},null,8,Ye)])):f("v-if",!0)]),_:2},1024)]),_:1},8,["data-source"])):(d(),k(M,{key:1,description:e.t("search.results.noMatch",{query:e.currentQuery}),image:e.EMPTY_IMG,style:{padding:"40px 0"}},null,8,["description","image"])):(d(),k(M,{key:0,description:e.t("search.results.promptEmpty"),image:e.EMPTY_IMG,style:{padding:"40px 0"}},null,8,["description","image"]))]),_:1},8,["tab"]),f(" ── Index browser tab ────────────────────────────────── "),r(H,{key:"index",tab:e.t("search.tabs.index")},{default:t(()=>[m("div",We,[r(T,{value:e.indexCategoryFilter,"onUpdate:value":l[3]||(l[3]=a=>e.indexCategoryFilter=a),size:"small","button-style":"solid"},{default:t(()=>[r(A,{value:""},{default:t(()=>[_(i(e.t("search.index.allCategories")),1)]),_:1}),(d(!0),g(O,null,L(e.indexSummary.categories.slice(0,6),a=>(d(),k(A,{key:a.name,value:a.name},{default:t(()=>[_(i(a.name)+" ("+i(a.count)+") ",1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),r(z,{value:e.indexTagFilter,"onUpdate:value":l[4]||(l[4]=a=>e.indexTagFilter=a),placeholder:e.t("search.index.tagFilterPlaceholder"),"allow-clear":"",size:"small",style:{"max-width":"180px"}},null,8,["value","placeholder"])]),f(" Top tags chips "),e.indexSummary.tags.length?(d(),g("div",Ze,[m("span",Xe,i(e.t("search.index.topTagsLabel")),1),(d(!0),g(O,null,L(e.indexSummary.tags.slice(0,12),a=>(d(),k(S,{key:a.name,color:e.indexTagFilter===a.name?"blue":"default",class:"tag-chip",onClick:p=>e.indexTagFilter=e.indexTagFilter===a.name?"":a.name},{default:t(()=>[_(i(a.name)+" ",1),m("span",$e,i(a.count),1)]),_:2},1032,["color","onClick"]))),128))])):f("v-if",!0),r(X,{columns:e.noteColumns,"data-source":e.filteredNotes,pagination:{pageSize:20,showTotal:a=>e.t("search.totals.rows",{count:a})},size:"small",loading:e.loadingIndex,style:{background:"var(--bg-card)"}},{bodyCell:t(({column:a,record:p})=>[a.key==="title"?(d(),g(O,{key:0},[m("span",et,i(p.title||e.t("search.results.noTitle")),1),m("div",tt,i(p.id.slice(0,16)),1)],64)):f("v-if",!0),a.key==="category"?(d(),k(S,{key:1,color:e.categoryColor(p.category)},{default:t(()=>[_(i(p.category),1)]),_:2},1032,["color"])):f("v-if",!0),a.key==="tags"?(d(),g(O,{key:2},[(d(!0),g(O,null,L(p.tags.slice(0,4),D=>(d(),k(S,{key:D,color:"default",style:{"font-size":"11px"}},{default:t(()=>[_(i(D),1)]),_:2},1024))),128)),p.tags.length>4?(d(),g("span",rt,"+"+i(p.tags.length-4),1)):f("v-if",!0)],64)):f("v-if",!0),a.key==="createdAt"?(d(),g("span",at,i(e.formatSearchTime(p.createdAt)),1)):f("v-if",!0),a.key==="action"?(d(),g(O,{key:4},[r(C,{size:"small",type:"link",onClick:D=>e.viewNote(p.id)},{default:t(()=>[_(i(e.t("search.index.rowAction.view")),1)]),_:1},8,["onClick"]),r(C,{size:"small",type:"link",onClick:D=>e.searchSimilar(p)},{default:t(()=>[_(i(e.t("search.index.rowAction.similar")),1)]),_:1},8,["onClick"])],64)):f("v-if",!0)]),emptyText:t(()=>[m("div",ot,[r(e.BookOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),_(" "+i(e.indexCategoryFilter||e.indexTagFilter?e.t("search.empty.filtered"):e.t("search.empty.noNotes")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"])]),_:1},8,["activeKey"]),f(" ── Note detail modal ─────────────────────────────────── "),r(U,{open:e.showNoteModal,"onUpdate:open":l[6]||(l[6]=a=>e.showNoteModal=a),title:e.t("search.note.title",{title:e.currentNote?.title||""}),width:780,footer:null},{default:t(()=>[e.loadingNote?(d(),g("div",nt,[r(R)])):e.currentNote?(d(),g("div",lt,[r(ee,{column:2,size:"small",bordered:""},{default:t(()=>[r(I,{label:e.t("search.note.id"),span:2},{default:t(()=>[m("span",st,i(e.currentNote.id),1)]),_:1},8,["label"]),r(I,{label:e.t("search.note.category")},{default:t(()=>[r(S,{color:e.categoryColor(e.currentNote.category)},{default:t(()=>[_(i(e.currentNote.category),1)]),_:1},8,["color"])]),_:1},8,["label"]),r(I,{label:e.t("search.note.tags")},{default:t(()=>[(d(!0),g(O,null,L(e.currentNote.tags,a=>(d(),k(S,{key:a,color:"default"},{default:t(()=>[_(i(a),1)]),_:2},1024))),128)),e.currentNote.tags.length?f("v-if",!0):(d(),g("span",it,"—"))]),_:1},8,["label"]),r(I,{label:e.t("search.note.createdAt")},{default:t(()=>[_(i(e.formatSearchTime(e.currentNote.createdAt)),1)]),_:1},8,["label"]),r(I,{label:e.t("search.note.updatedAt")},{default:t(()=>[_(i(e.formatSearchTime(e.currentNote.updatedAt)),1)]),_:1},8,["label"])]),_:1}),m("h4",ct,i(e.t("search.note.content")),1),e.currentNote.content?(d(),g("div",dt,[m("span",{innerHTML:e.highlightContent(e.currentNote.content,e.currentQuery)},null,8,ut)])):(d(),k(M,{key:1,description:e.t("search.note.emptyContent"),image:e.EMPTY_IMG},null,8,["description","image"]))])):f("v-if",!0)]),_:1},8,["open","title"])])}const yt=Se(Pe,[["render",ft],["__scopeId","data-v-d2b94ce3"],["__file","/tmp/cc-web-panel-1Koio1/repo/packages/web-panel/src/views/Search.vue"]]);export{yt as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Q as r}from"./index-DPguq3X7.js";const o=((n,a,e)=>{r(n,`[ant-design-vue: ${a}] ${e}`)});export{o as d};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{A as o}from"./Row-DO0fd48A.js";import{a0 as t}from"./index-DPguq3X7.js";import"./vendor-Bn1JzzAn.js";import"./responsiveObserve-eBj7qi2J.js";import"./useFlexGapSupport-ekFwFs9h.js";import"./styleChecker-DtyKMtHB.js";import"./index-SDrcQXO1.js";import"./icons-DEmcnxBf.js";const l=t(o);export{l as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{C as o}from"./Col-Ju0HrAuS.js";import{a0 as t}from"./index-DPguq3X7.js";import"./vendor-Bn1JzzAn.js";import"./index-SDrcQXO1.js";import"./icons-DEmcnxBf.js";const s=t(o);export{s as default};
|