chainlesschain 0.166.72 → 0.166.74
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 +15 -2
- package/package.json +2 -1
- package/scripts/pm-exploration-effect.mjs +188 -0
- package/src/assets/web-panel/assets/{AIOps-Vk4bgcvz.js → AIOps-BlIvP3k1.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-dm1pfXdM.js → ActionButton-DYF7atSV.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-C9WdXlkB.js → Analytics-LZYaYek6.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-0f-jWk68.js → AppLayout-BJxrjNbj.js} +5 -5
- package/src/assets/web-panel/assets/Artifacts-gEDhxhmE.js +1 -0
- package/src/assets/web-panel/assets/{Audit-CymWJrNf.js → Audit-B0MR950Q.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-9bWGX_cn.js → BackgroundAgents-3e6Os_Kl.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-DFBHB3_Y.js → Backup-DB_X8KUg.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-D9Lm9d3n.js → BaseInput-DTNcvNeG.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-maC7odiU.js → Chat-SnqdA62j.js} +6 -6
- package/src/assets/web-panel/assets/{ChatBubbleRenderer-Crsqn0B1.js → ChatBubbleRenderer-BaiWNH_V.js} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-BrZgAIL0.js → Checkbox-Dj0O4dyP.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-ChqWBE8R.js → Codegen-BeelW3dx.js} +1 -1
- package/src/assets/web-panel/assets/{Col-C5TaXHn9.js → Col-BmstiyBM.js} +1 -1
- package/src/assets/web-panel/assets/{Community-D8m4Egsw.js → Community-CrbmFk3f.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-CMJmi_Bw.js → Compact-DCg5ZPIw.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-CW7Bwy8s.js → Compliance-B3sajhq7.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-DLhPTsU6.js → Cowork-DWcdvrDK.js} +4 -4
- package/src/assets/web-panel/assets/{Cron-DBrXtf_1.js → Cron-Bjwp_NDf.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-CzLbJF3j.js → Crosschain-BXTLC9o8.js} +1 -1
- package/src/assets/web-panel/assets/{DID-DreItINq.js → DID-Di62M46b.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-B_gO9CjY.js → Dashboard-BQED8Rkt.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-DXpPiTH_.js → Dropdown-DEf9VYaj.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-Cb1YonC_.js → EmailListRenderer-DhFpPMAM.js} +1 -1
- package/src/assets/web-panel/assets/{EvolutionSettings-GQb6tV_E.js → EvolutionSettings-BOqmzkpS.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-DUtpqpsn.js → FamilyGuardDashboard-BxBnJ4fe.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-CfZsj0gb.js → Federation-BN9Q8nsZ.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-Cdr40ozm.js → FormItemContext-CGeqFEd-.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-BRaf18hh.js → GenericCardRenderer-DElmWQTc.js} +1 -1
- package/src/assets/web-panel/assets/{Git-7SqGn3Zi.js → Git-BHBSgKck.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-D1mfL8Fz.js → Governance-Breo3NTU.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-BXVyCWMd.js → Inference-CCABy4E0.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-C-wAA2Ub.js → KnowledgeGraph-B6_ryn-X.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-DWxiJiFe.js → Logs-CkmJjJok.js} +2 -2
- package/src/assets/web-panel/assets/MarkdownRenderer-DQEQBaRu.js +1 -0
- package/src/assets/web-panel/assets/{Marketplace-CmOVgbTO.js → Marketplace-iip65jxv.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-Cx4WyryN.js → McpTools-DDwp_QLb.js} +2 -2
- package/src/assets/web-panel/assets/{Memory-Di6wy0Ky.js → Memory-2ZmNDRkC.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-DrR7I1A7.js → MobileBridge-C6HilwZl.js} +1 -1
- package/src/assets/web-panel/assets/{MobileProjects-SnNFgay-.js → MobileProjects-BeMtYRhx.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-DPZpfO4G.js → Mtc-Bp-FEcoo.js} +4 -4
- package/src/assets/web-panel/assets/{MtcAudit-CTT74J6Y.js → MtcAudit-DNdkTCe5.js} +2 -2
- package/src/assets/web-panel/assets/{Multisig-DoLT96hm.js → Multisig-PnKg2_Eo.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-BY-9TS7_.js → NLProgramming-DDp4lZeG.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-1_rKLQkS.js → Notes-DEjFktcO.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-D8N1NZ6Y.js → NotificationSettings-FR8fJDAn.js} +1 -1
- package/src/assets/web-panel/assets/OrderTableRenderer-Cyc-XI0L.js +1 -0
- package/src/assets/web-panel/assets/{Organization-DKQtaPAc.js → Organization-DNW2E_JU.js} +3 -3
- package/src/assets/web-panel/assets/{Overflow-B3n9XpS2.js → Overflow-BHfd6wk6.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-Fn8LWurl.js → P2P-COIkaXH4.js} +2 -2
- package/src/assets/web-panel/assets/PdhVaultBrowser-DuRP0UeX.js +7 -0
- package/src/assets/web-panel/assets/{Permissions-CTCN6Rk6.js → Permissions-BfVRGMy8.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-BwpvzXm7.js → PersonalDataHub-BWYjO6Aa.js} +4 -4
- package/src/assets/web-panel/assets/{Pipeline-C1_hrCCQ.js → Pipeline-C0e0fPBW.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-C-BmNft5.js → Privacy-CnId4Jv-.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-B9HYk17G.js → ProjectInit-CYf1grXg.js} +2 -2
- package/src/assets/web-panel/assets/ProjectSettings-HsXgJdiH.js +2 -0
- package/src/assets/web-panel/assets/{Projects-Yofw9TrC.js → Projects-Bi0r9QcC.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-B83JppEP.js → Providers-B-Tu_-_4.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-D5ZRpUGC.js → QrScannerModal-CPDqYT2F.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-B-mz9iY-.js → QuickAsk-Df6qcjXy.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-DtjVu00v.js → Recommend-dP6sfGSY.js} +1 -1
- package/src/assets/web-panel/assets/{RemoteSession-Dk8IBiG3.js → RemoteSession-VAt9-tM3.js} +3 -3
- package/src/assets/web-panel/assets/{Reputation-DpTIK7Oe.js → Reputation-DtRVRiLI.js} +1 -1
- package/src/assets/web-panel/assets/{Row-DVYQoXil.js → Row-B6Ukqvli.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-ikMaTwEE.js → RssFeed-DfVRQMrZ.js} +3 -3
- package/src/assets/web-panel/assets/{Search-CHVHCNdo.js → Search-CyncAiqQ.js} +1 -1
- package/src/assets/web-panel/assets/{Security-MxjX-UDp.js → Security-DEO7nrkb.js} +4 -4
- package/src/assets/web-panel/assets/{Services-CmwTYlHk.js → Services-CkusQEhN.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-BQzBoW5V.js → Skeleton-CbGtO3kc.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-B-mPG69i.js → Skills-diOh0gAr.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-DOQbR10a.js → Sla-CIu9Ahak.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-wPQkSA9J.js → SpeechSettings-_Nzyi4K9.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-BPyc0P-r.js → SyncSettings-BAOLFlRq.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-DbBA-eHJ.js → Tasks-BpmvL1Eq.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-BRpihbvV.js → Templates-Dkr_vRdJ.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-B1qu8vDX.js → Tenant-kM7lHUFR.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-CEe3YAvM.js → Terminal-9zfc41aU.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-Biz2ENj5.js → TimelineRenderer-Cg_7j6cj.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-Bh-mJyas.js → Tokens-Cs1aikaM.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-DaFKe1bY.js → Trigger-DKYPJ9gl.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-DsJ7u_-G.js → Trust-BFy1Sm8B.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-9I90JZxO.js → UkeySign-B31L9NBH.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-C96s3pW9.js → VideoEditing-OMmUYdIC.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-DTMqIySe.js → Wallet-y3aE7oru.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-C3rh3szY.js → WebAuthn-C0ICKvpu.js} +5 -5
- package/src/assets/web-panel/assets/{WorkflowEditor-C3as7vBp.js → WorkflowEditor-Cq5UYbr5.js} +1 -1
- package/src/assets/web-panel/assets/{chat-zsGetwuT.js → chat-B1ijaKFv.js} +1 -1
- package/src/assets/web-panel/assets/{colors-Dt9qbWYV.js → colors-CHkI8PDg.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-BJWYHVIL.js → compact-item-1BYvgWEs.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-pKrpnY7l.js → createContext-BGti56u4.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-Isft1nEX.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-sbUKl7Xu.js → hasIn-Cr87Fph1.js} +1 -1
- package/src/assets/web-panel/assets/{index-oUag3zZf.js → index-1WxCzqYq.js} +1 -1
- package/src/assets/web-panel/assets/{index--wWXhZQU.js → index-6Ta8Pg47.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dmp7IdrF.js → index-B1yur8MU.js} +1 -1
- package/src/assets/web-panel/assets/{index-BSXJ2PbY.js → index-B4BSM3BK.js} +1 -1
- package/src/assets/web-panel/assets/{index-B9DoXtNz.js → index-B8Jb_cGt.js} +1 -1
- package/src/assets/web-panel/assets/{index-BRpfrG-e.js → index-BA0FMuDX.js} +1 -1
- package/src/assets/web-panel/assets/{index-n8vVPeJ6.js → index-BKb16YKp.js} +1 -1
- package/src/assets/web-panel/assets/{index-BFMPJahZ.js → index-BOjTRSHE.js} +3 -3
- package/src/assets/web-panel/assets/{index-BR1gZBlK.js → index-BYpqBWlt.js} +1 -1
- package/src/assets/web-panel/assets/index-B_T9NUk7.js +1 -0
- package/src/assets/web-panel/assets/{index-sakhsZMa.js → index-Bdkrut2A.js} +1 -1
- package/src/assets/web-panel/assets/{index-Di-YcQHn.js → index-BjgtiMdY.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bf8dv266.js → index-BkFXPrdx.js} +1 -1
- package/src/assets/web-panel/assets/{index-CR5WxgE-.js → index-Bni5GodE.js} +1 -1
- package/src/assets/web-panel/assets/{index-0CK6iR4G.js → index-CDTNnQDz.js} +1 -1
- package/src/assets/web-panel/assets/{index-DIxu3nOh.js → index-CQWMHlY7.js} +1 -1
- package/src/assets/web-panel/assets/{index-5GohpTfK.js → index-CS0MIE2C.js} +1 -1
- package/src/assets/web-panel/assets/{index-qE4san4o.js → index-C_lEztok.js} +1 -1
- package/src/assets/web-panel/assets/{index-DWBlZsqf.js → index-CbkGda_k.js} +1 -1
- package/src/assets/web-panel/assets/{index-DoMii5CD.js → index-CevUJTXd.js} +1 -1
- package/src/assets/web-panel/assets/{index-omZRNwB7.js → index-CjBkVrq9.js} +1 -1
- package/src/assets/web-panel/assets/{index-BfQmb4PB.js → index-CkcWhgLB.js} +1 -1
- package/src/assets/web-panel/assets/{index-fQ-JtwM7.js → index-CmmSJBNi.js} +1 -1
- package/src/assets/web-panel/assets/{index-DRAzhNw6.js → index-CvcpesEZ.js} +1 -1
- package/src/assets/web-panel/assets/{index-vTPOhhfW.js → index-Cvu95WPI.js} +1 -1
- package/src/assets/web-panel/assets/{index-BWPF2Hth.js → index-D6g4jxdE.js} +1 -1
- package/src/assets/web-panel/assets/index-DBqUxaat.js +1 -0
- package/src/assets/web-panel/assets/{index-BZmBSuN8.js → index-DCkvhzaY.js} +1 -1
- package/src/assets/web-panel/assets/{index-D7tOZZAs.js → index-DHJtAEx8.js} +1 -1
- package/src/assets/web-panel/assets/{index-C_z7zLle.js → index-DJjnXDAD.js} +1 -1
- package/src/assets/web-panel/assets/{index-BiZ6Lupa.js → index-Dam-LB_J.js} +1 -1
- package/src/assets/web-panel/assets/{index-B53DhH1R.js → index-DcoI3ENn.js} +1 -1
- package/src/assets/web-panel/assets/{index-CRsSdHdW.js → index-Dnp-4yPc.js} +1 -1
- package/src/assets/web-panel/assets/{index-DD_IBhgm.js → index-Duv0TfJa.js} +1 -1
- package/src/assets/web-panel/assets/{index-CnrxgbPB.js → index-DzevrmLK.js} +1 -1
- package/src/assets/web-panel/assets/{index-BQtTUsCI.js → index-fhpMyq0u.js} +1 -1
- package/src/assets/web-panel/assets/{index-DFQTgkPD.js → index-rO6VKJv5.js} +1 -1
- package/src/assets/web-panel/assets/{index-DJZq5jWm.js → index-rVnXNFST.js} +1 -1
- package/src/assets/web-panel/assets/{index-T8ASbPWt.js → index-tY479EoQ.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-BVpFM2mv.js → initDefaultProps-DAGtnwoX.js} +1 -1
- package/src/assets/web-panel/assets/{motion-Mrl9_kZM.js → motion-02FXBi5C.js} +1 -1
- package/src/assets/web-panel/assets/{move-CvRC7fRw.js → move-BLf7rhzJ.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-C7PSeivU.js → mtc-parser-Ct6i1vqQ.js} +1 -1
- package/src/assets/web-panel/assets/{omit-RI1cO_Ok.js → omit-DKvTU8IT.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-akwD3e22.js → pickAttrs-DqDsKoMe.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-C4f-tfqj.js → placementArrow-kae6Cnwx.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-hyHNGoSW.js → responsiveObserve-DzFM_TQf.js} +1 -1
- package/src/assets/web-panel/assets/{slide-B6vlTDr6.js → slide-qDjNFPuM.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-D8poWZW8.js → statusUtils-BihSr7G3.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-Bz1ZKvoD.js → styleChecker-BzoT0TfJ.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-C-vv_T11.js → useFlexGapSupport-CjXXcU1j.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-BubqlAej.js → useFs-DrWcbDJ1.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-CTNJrVC8.js → usePersonalDataHub-DO1oBNTE.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-DbT41Wli.js → vnode-BR6crWko.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-R0Rxz73D.js → zoom-DmKLfw6W.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/data/changelog.json +26 -0
- package/src/lib/evolution/evolution-eval-gate.js +289 -32
- package/src/lib/evolution/pm-exploration-benchmark.js +2014 -49
- package/src/lib/evolution/skill-writer-inventory-manifest.js +4 -1
- package/src/lib/task-progress-tracker.js +47 -4
- package/src/runtime/agent-core.js +18 -7
- package/src/assets/web-panel/assets/Artifacts-C7HWVeFu.js +0 -1
- package/src/assets/web-panel/assets/MarkdownRenderer-BJl3Hibe.js +0 -1
- package/src/assets/web-panel/assets/OrderTableRenderer-Ch-HjmbS.js +0 -1
- package/src/assets/web-panel/assets/PdhVaultBrowser-CsumgiUO.js +0 -7
- package/src/assets/web-panel/assets/ProjectSettings-BFgA-an1.js +0 -2
- package/src/assets/web-panel/assets/devWarning-CAmY8PZd.js +0 -1
- package/src/assets/web-panel/assets/index-Dfsrnshy.js +0 -1
- package/src/assets/web-panel/assets/index-tlLfPT5e.js +0 -1
|
@@ -166,7 +166,10 @@ export const SKILL_WRITER_INVENTORY = Object.freeze({
|
|
|
166
166
|
symbol: "_executeRunCode",
|
|
167
167
|
evidence: [
|
|
168
168
|
"async function _executeRunCode(args, cwd)",
|
|
169
|
-
"output = runCodeProcess(
|
|
169
|
+
"output = runCodeProcess(",
|
|
170
|
+
'bashStdin ? ["-s", "--"] : [scriptPath]',
|
|
171
|
+
"...(bashStdin ? { input: code } : {})",
|
|
172
|
+
"...pluginBinSandboxOptions",
|
|
170
173
|
],
|
|
171
174
|
},
|
|
172
175
|
}),
|
|
@@ -47,11 +47,13 @@ function isGitInspection(result, args) {
|
|
|
47
47
|
.trim()
|
|
48
48
|
.replace(/^git\s+/i, "");
|
|
49
49
|
return (
|
|
50
|
-
/^(?:merge-base|grep|rev-list|ls-files|ls-tree|ls-remote|cat-file|describe|name-rev)\b/i.test(
|
|
50
|
+
/^(?:status|diff|log|show|rev-parse|merge-base|grep|rev-list|ls-files|ls-tree|ls-remote|cat-file|describe|name-rev|fetch)\b/i.test(
|
|
51
51
|
command,
|
|
52
52
|
) ||
|
|
53
53
|
/^remote\s*(?:-v|--verbose)?\s*$/i.test(command) ||
|
|
54
|
-
/^(?:branch|tag)\s
|
|
54
|
+
/^(?:branch|tag)\s*(?:$|(?:--list|-l|--show-current|--contains|--no-merged|--merged|-a|-r|--all|--sort)(?:[=\s]|$))/i.test(
|
|
55
|
+
command,
|
|
56
|
+
)
|
|
55
57
|
);
|
|
56
58
|
}
|
|
57
59
|
|
|
@@ -61,7 +63,7 @@ function isGitInspection(result, args) {
|
|
|
61
63
|
function isRemoteInspectionCommand(command) {
|
|
62
64
|
if (typeof command !== "string") return false;
|
|
63
65
|
if (
|
|
64
|
-
/(?:^|[\s;&|])gh(?:\.exe)?\s+(?:run\s+(?:view|list|watch)|pr\s+(?:view|list|diff|checks)|auth\s+status)\b/i.test(
|
|
66
|
+
/(?:^|[\s;&|])gh(?:\.exe)?\s+(?:run\s+(?:view|list|watch)|pr\s+(?:view|list|diff|checks)|workflow\s+(?:view|list)|auth\s+status)\b/i.test(
|
|
65
67
|
command,
|
|
66
68
|
)
|
|
67
69
|
)
|
|
@@ -76,6 +78,43 @@ function isRemoteInspectionCommand(command) {
|
|
|
76
78
|
);
|
|
77
79
|
}
|
|
78
80
|
|
|
81
|
+
// Advisory classification, never execution parsing or permission approval.
|
|
82
|
+
// A retry wrapper or JSON filter is still investigation, even when each call
|
|
83
|
+
// prints a different small result. Unknown computations remain available.
|
|
84
|
+
function isInspectionScript(code) {
|
|
85
|
+
if (typeof code !== "string") return false;
|
|
86
|
+
// Keep actual changes and focused verification eligible to advance the task.
|
|
87
|
+
if (
|
|
88
|
+
/\b(?:writeFile(?:Sync)?|appendFile(?:Sync)?|unlink(?:Sync)?|rename(?:Sync)?|mkdir(?:Sync)?|rmSync|rmdirSync|assert|pytest|vitest|unittest)\b/.test(
|
|
89
|
+
code,
|
|
90
|
+
) ||
|
|
91
|
+
/\b(?:npm\s+(?:test|run|publish)|git\s+(?:commit|merge|cherry-pick|push)|gh\s+(?:pr\s+(?:create|merge|close)|run\s+rerun))\b/i.test(
|
|
92
|
+
code,
|
|
93
|
+
)
|
|
94
|
+
)
|
|
95
|
+
return false;
|
|
96
|
+
// Direct exec("gh ...") and helpers such as gh("run view ...") both occur
|
|
97
|
+
// in recovery loops. Do not execute/extract these strings as commands.
|
|
98
|
+
const literals = [...code.matchAll(/["'`]([^"'`\r\n]+)["'`]/g)].map(
|
|
99
|
+
(match) => match[1],
|
|
100
|
+
);
|
|
101
|
+
if (literals.some((value) => isRemoteInspectionCommand(value))) return true;
|
|
102
|
+
if (
|
|
103
|
+
/\bgh\s*\(/.test(code) &&
|
|
104
|
+
literals.some((value) => isRemoteInspectionCommand(`gh ${value}`))
|
|
105
|
+
)
|
|
106
|
+
return true;
|
|
107
|
+
// Parsing previously saved logs/metadata is evidence collection too.
|
|
108
|
+
return (
|
|
109
|
+
/\b(?:readFileSync|readFile|readdirSync|readdir|read_text|read_bytes|json\.load)\s*\(/.test(
|
|
110
|
+
code,
|
|
111
|
+
) &&
|
|
112
|
+
!/\b(?:execSync|execFileSync|spawnSync|exec|spawn|subprocess|system)\s*[.(]/.test(
|
|
113
|
+
code,
|
|
114
|
+
)
|
|
115
|
+
);
|
|
116
|
+
}
|
|
117
|
+
|
|
79
118
|
function remember(map, key, value, limit) {
|
|
80
119
|
map.delete(key);
|
|
81
120
|
map.set(key, value);
|
|
@@ -180,7 +219,9 @@ export class TaskProgressTracker {
|
|
|
180
219
|
? "git-inspection"
|
|
181
220
|
: remoteTarget?.github || isRemoteInspectionCommand(command)
|
|
182
221
|
? "remote-inspection"
|
|
183
|
-
: "
|
|
222
|
+
: tool === "run_code" && isInspectionScript(command)
|
|
223
|
+
? "script-inspection"
|
|
224
|
+
: "local-execution"),
|
|
184
225
|
invocation: boundedText(command || previous?.invocation, 1000),
|
|
185
226
|
invocationTruncated: command
|
|
186
227
|
? command.length > 1000
|
|
@@ -293,6 +334,7 @@ export class TaskProgressTracker {
|
|
|
293
334
|
exploration =
|
|
294
335
|
!!remoteReadTarget(tool, args) ||
|
|
295
336
|
remoteInspection ||
|
|
337
|
+
(tool === "run_code" && isInspectionScript(args.code)) ||
|
|
296
338
|
output.length >= 8000 ||
|
|
297
339
|
this.commandOutputs.has(digest);
|
|
298
340
|
if (!failed) remember(this.commandOutputs, digest, true, 64);
|
|
@@ -356,6 +398,7 @@ export class TaskProgressTracker {
|
|
|
356
398
|
"For research/review, synthesize evidence-backed findings; do not write files merely to clear this warning. " +
|
|
357
399
|
"If evidence is insufficient, name the exact missing fact and use a focused search or bounded computation. " +
|
|
358
400
|
"Do not restart general investigation, rewrite the plan, or delegate the same research. " +
|
|
401
|
+
"Re-reading the same commit, completed CI run or saved metadata through a different script is still investigation. Once a failure and candidate fix are established, run the focused validation or perform the next authorized action; do not repeatedly announce that the root cause is confirmed. For monitoring, poll a compact status at a reasonable interval and investigate again only when the state changes. " +
|
|
359
402
|
"A child exhausting its budget is not task completion. Preserve useful partial findings and continue the original task. " +
|
|
360
403
|
"During recovery, broad discovery stays paused until an actionable tool outcome; a focused search, another status query or a failed command does not end recovery. " +
|
|
361
404
|
"Use search_files for an exact missing local fact, read_file with an explicit offset and limit of at most 80 lines for a known target section, or run a bounded computation/verification, then act on the result. " +
|
|
@@ -1128,6 +1128,8 @@ Key behaviors:
|
|
|
1128
1128
|
- For CI log retrieval, inspect command stderr before retrying. Match syntax to the actual shell: Windows PowerShell 5 does not support &&, cmd treats single quotes literally, and head is not a Windows builtin. Prefer a plain gh metadata/log command without jq or pipelines first, then inspect the saved output. Never switch shells to bypass a policy denial.
|
|
1129
1129
|
- For long-running commands (builds, full test suites, dev servers) set run_shell { run_in_background: true } to get a task_id back immediately, then poll output and completion with check_shell { task_id }. Kill a backgrounded server with check_shell { task_id, kill: true } when finished
|
|
1130
1130
|
- When asked about git status, diff, log, or other repository operations, use the git tool instead of run_shell
|
|
1131
|
+
- The git tool accepts ONE Git argument list, without pipes, redirects, &&, semicolons or echo. Use log -n 5 instead of piping to head; inspect the returned exitCode for predicates such as merge-base --is-ancestor (1 means false). Discover remote names with remote -v; do not assume origin exists.
|
|
1132
|
+
- On Windows, run_shell defaults to cmd unless configured otherwise. Set shell: "powershell" for PowerShell syntax or shell: "pwsh" for PowerShell 7. Parse saved JSON after stripping an initial UTF-8 BOM; a BOM parse error is not a JavaScript syntax defect.
|
|
1131
1133
|
- When asked about files or code, use search_files to locate relevant sections, then read_file with offset/limit. Follow nextRead for large files. Reuse unchanged content already in context instead of repeatedly reading the same page; re-read when the file changes or the earlier content is no longer available.
|
|
1132
1134
|
- For long text files, use search_files with path and pattern to find matching lines/columns and nearby text; read the returned nextRead location instead of paging from the top.
|
|
1133
1135
|
- For online discovery without a known URL, use web_search with keywords. Return relevant source links and snippets; use web_fetch only when the source needs closer reading. For a known URL, fetch it directly. Download large pages once, then use snapshotId to search or read local chunks. Never invent URLs or claim a blocked search returned no results.
|
|
@@ -9396,13 +9398,22 @@ async function _executeRunCode(args, cwd) {
|
|
|
9396
9398
|
const start = Date.now();
|
|
9397
9399
|
let output;
|
|
9398
9400
|
try {
|
|
9399
|
-
|
|
9400
|
-
|
|
9401
|
-
|
|
9402
|
-
|
|
9403
|
-
|
|
9404
|
-
|
|
9405
|
-
|
|
9401
|
+
// Windows may resolve bash to Git Bash or WSL. Neither should receive a
|
|
9402
|
+
// native temp pathname as a shell token. Stdin preserves the script bytes
|
|
9403
|
+
// across both path dialects, without an extra shell or path conversion.
|
|
9404
|
+
const bashStdin = lang === "bash" && process.platform === "win32";
|
|
9405
|
+
output = runCodeProcess(
|
|
9406
|
+
interpreter,
|
|
9407
|
+
bashStdin ? ["-s", "--"] : [scriptPath],
|
|
9408
|
+
{
|
|
9409
|
+
cwd,
|
|
9410
|
+
...(bashStdin ? { input: code } : {}),
|
|
9411
|
+
encoding: "utf8",
|
|
9412
|
+
timeout: timeoutSec * 1000,
|
|
9413
|
+
maxBuffer: 5 * 1024 * 1024,
|
|
9414
|
+
...pluginBinSandboxOptions,
|
|
9415
|
+
},
|
|
9416
|
+
);
|
|
9406
9417
|
} catch (err) {
|
|
9407
9418
|
// Broker boundary errors carry the required/actual/missing guarantees and
|
|
9408
9419
|
// backend attestation. Preserve that exact structured error for callers
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{E as J,b as z,r as C,I as k,J as y,U as _,c as r,K as o,S,V as B,o as V,f as D,P as d,Q as f,R as p,F as j}from"./vendor-Bn1JzzAn.js";import{M as Q}from"./MarkdownRenderer-BJl3Hibe.js";import{u as F,_ as W,d as R}from"./index-BFMPJahZ.js";import{R as q}from"./icons-DG5UD-6K.js";import"./markdown-Yo_c6Krv.js";import"./markdown-CsiA8-E5.js";const K=J("artifacts",()=>{const h=C([]),t=C(!1),u=C(""),e=C(""),v=C(null),b=C(!1),A=z(()=>[...new Set(h.value.map(a=>a.kind).filter(Boolean))].sort());async function l(){const n=F();t.value=!0;try{const a={type:"artifact-list"};u.value&&(a.kind=u.value),e.value&&(a.session=e.value);const s=await n.sendRaw(a);s&&Array.isArray(s.artifacts)&&(h.value=[...s.artifacts].reverse())}catch{}finally{t.value=!1}}async function g(n){const a=F();b.value=!0,v.value={entry:n,previewable:!1};try{const s=await a.sendRaw({type:"artifact-content",artifactId:n.id});v.value={entry:n,previewable:s?.previewable===!0,encoding:s?.encoding||null,content:s?.content||"",truncated:s?.truncated===!0,reason:s?.reason||null}}catch(s){v.value={entry:n,previewable:!1,reason:s?.message||"preview failed"}}finally{b.value=!1}}function i(){v.value=null}const m=z(()=>{const n=v.value;return!n?.previewable||n.encoding!=="base64"?null:`data:${n.entry?.mime||"image/png"};base64,${n.content}`}),O=z(()=>{const n=v.value;return n?.previewable===!0&&n.encoding==="utf8"&&String(n.entry?.mime||"").toLowerCase()==="text/markdown"});async function M(n,a={}){if(!n?.id)return!1;const s=a.fetch||globalThis.fetch,L=a.document||globalThis.document,T=a.URL||globalThis.URL,N=(a.config||globalThis.window?.__CC_CONFIG__)??{};try{const U=await s(`/api/artifacts/${n.id}/download`,{headers:N.wsToken?{Authorization:`Bearer ${N.wsToken}`}:{}});if(!U.ok)return!1;const G=await U.blob(),E=T.createObjectURL(G),I=L.createElement("a");return I.href=E,I.download=n.title||n.id,L.body.appendChild(I),I.click(),I.remove(),T.revokeObjectURL(E),!0}catch{return!1}}async function P(n){const a=F();if(!n)return!1;try{const s=await a.sendRaw({type:"artifact-remove",artifactId:n});return v.value?.entry?.id===n&&(v.value=null),await l(),s?.found===!0}catch{return!1}}async function c(){const n=F();try{const a=await n.sendRaw({type:"artifact-clean"});return await l(),Number(a?.removed)||0}catch{return 0}}function w(n){const a=Number(n)||0;return a<1024?`${a} B`:a<1024*1024?`${(a/1024).toFixed(1)} KB`:`${(a/(1024*1024)).toFixed(1)} MB`}function x(n){switch(n){case"report":return"blue";case"patch":return"purple";case"screenshot":return"cyan";case"log":return"default";case"data":return"green";default:return"default"}}return{artifacts:h,loading:t,kindFilter:u,sessionFilter:e,kinds:A,preview:v,previewLoading:b,previewImageSrc:m,previewIsMarkdown:O,fetchArtifacts:l,openPreview:g,closePreview:i,removeArtifact:P,cleanExpired:c,downloadArtifact:M,formatSize:w,kindColor:x}}),H={__name:"Artifacts",setup(h,{expose:t}){t();const u=K(),e=[{title:"标题",key:"title",dataIndex:"title",ellipsis:!0},{title:"类型",key:"kind",dataIndex:"kind",width:110},{title:"MIME",dataIndex:"mime",width:160,ellipsis:!0},{title:"大小",key:"size",dataIndex:"size",width:90},{title:"发布时间",key:"createdAt",dataIndex:"createdAt",width:170},{title:"会话",dataIndex:"sessionId",width:160,ellipsis:!0},{title:"操作",key:"actions",width:150}],v=z(()=>u.kinds.map(i=>({label:i,value:i})));async function b(i){await u.removeArtifact(i)?R.success("已删除"):R.error("删除失败")}async function A(){const i=await u.cleanExpired();R.info(i>0?`清理了 ${i} 个过期交付物`:"没有过期交付物")}async function l(i){await u.downloadArtifact(i)||R.error("下载失败")}V(()=>{u.fetchArtifacts()}),D(()=>{u.closePreview()});const g={store:u,columns:e,kindOptions:v,onRemove:b,onClean:A,onDownload:l,computed:z,onBeforeUnmount:D,onMounted:V,get ReloadOutlined(){return q},get message(){return R},MarkdownRenderer:Q,get useArtifactsStore(){return K}};return Object.defineProperty(g,"__isScriptSetup",{enumerable:!1,value:!0}),g}},X={class:"page-header"},Y=["onClick"],Z=["src"],$={key:1,class:"preview-markdown"},ee={key:2,class:"preview-text"},te={class:"preview-meta"},ne={key:0};function ae(h,t,u,e,v,b){const A=k("a-select"),l=k("a-button"),g=k("a-popconfirm"),i=k("a-space"),m=k("a-tag"),O=k("a-table"),M=k("a-empty"),P=k("a-card");return d(),y("div",null,[_("div",X,[t[7]||(t[7]=_("div",null,[_("h2",{class:"page-title"},"交付物"),_("p",{class:"page-sub"}," agent 用 publish_artifact 发布的交付物(报告 / patch / 截图 / 日志),在这里预览与管理(cc artifacts 同源)。 ")],-1)),r(i,null,{default:o(()=>[r(A,{value:e.store.kindFilter,"onUpdate:value":t[0]||(t[0]=c=>e.store.kindFilter=c),style:{"min-width":"120px"},placeholder:"全部类型","allow-clear":"",options:e.kindOptions,onChange:t[1]||(t[1]=c=>e.store.fetchArtifacts())},null,8,["value","options"]),r(g,{title:"删除所有过期交付物?",onConfirm:e.onClean},{default:o(()=>[r(l,null,{default:o(()=>[...t[5]||(t[5]=[f("清理过期",-1)])]),_:1})]),_:1}),r(l,{ghost:"",loading:e.store.loading,onClick:t[2]||(t[2]=c=>e.store.fetchArtifacts())},{icon:o(()=>[r(e.ReloadOutlined)]),default:o(()=>[t[6]||(t[6]=f(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),r(O,{"data-source":e.store.artifacts,columns:e.columns,"row-key":"id",size:"small",pagination:{pageSize:10,hideOnSinglePage:!0}},{bodyCell:o(({column:c,record:w})=>[c.key==="title"?(d(),y("a",{key:0,onClick:x=>e.store.openPreview(w)},p(w.title),9,Y)):c.key==="kind"?(d(),S(m,{key:1,color:e.store.kindColor(w.kind)},{default:o(()=>[f(p(w.kind),1)]),_:2},1032,["color"])):c.key==="size"?(d(),y(j,{key:2},[f(p(e.store.formatSize(w.size)),1)],64)):c.key==="createdAt"?(d(),y(j,{key:3},[f(p((w.createdAt||"").replace("T"," ").slice(0,19)),1)],64)):c.key==="actions"?(d(),S(i,{key:4},{default:o(()=>[r(l,{size:"small",onClick:x=>e.store.openPreview(w)},{default:o(()=>[...t[8]||(t[8]=[f("预览",-1)])]),_:1},8,["onClick"]),r(l,{size:"small",onClick:x=>e.onDownload(w)},{default:o(()=>[...t[9]||(t[9]=[f("下载",-1)])]),_:1},8,["onClick"]),r(g,{title:"删除该交付物?",onConfirm:x=>e.onRemove(w.id)},{default:o(()=>[r(l,{size:"small",danger:""},{default:o(()=>[...t[10]||(t[10]=[f("删除",-1)])]),_:1})]),_:1},8,["onConfirm"])]),_:2},1024)):B("v-if",!0)]),_:1},8,["data-source"]),e.store.preview?(d(),S(P,{key:0,size:"small",class:"preview-card",loading:e.store.previewLoading},{title:o(()=>[r(i,null,{default:o(()=>[_("span",null,p(e.store.preview.entry?.title),1),r(m,{color:e.store.kindColor(e.store.preview.entry?.kind)},{default:o(()=>[f(p(e.store.preview.entry?.kind),1)]),_:1},8,["color"]),r(m,{color:"default"},{default:o(()=>[f(p(e.store.preview.entry?.mime),1)]),_:1}),e.store.preview.truncated?(d(),S(m,{key:0,color:"warning"},{default:o(()=>[...t[11]||(t[11]=[f("已截断预览",-1)])]),_:1})):B("v-if",!0)]),_:1})]),extra:o(()=>[r(i,null,{default:o(()=>[r(l,{size:"small",onClick:t[3]||(t[3]=c=>e.onDownload(e.store.preview.entry))},{default:o(()=>[...t[12]||(t[12]=[f("下载",-1)])]),_:1}),r(l,{size:"small",onClick:t[4]||(t[4]=c=>e.store.closePreview())},{default:o(()=>[...t[13]||(t[13]=[f("关闭",-1)])]),_:1})]),_:1})]),default:o(()=>[e.store.previewImageSrc?(d(),y("img",{key:0,src:e.store.previewImageSrc,class:"preview-image",alt:"artifact preview"},null,8,Z)):e.store.previewIsMarkdown?(d(),y("div",$,[r(e.MarkdownRenderer,{content:e.store.preview.content||""},null,8,["content"])])):e.store.preview.previewable?(d(),y("pre",ee,p(e.store.preview.content||"(空文件)"),1)):(d(),S(M,{key:3,description:e.store.preview.reason||"该类型不支持在线预览,可在本机用 cc artifacts open <id> 打开"},null,8,["description"])),_("div",te,[_("span",null,p(e.store.preview.entry?.id),1),e.store.preview.entry?.sessionId?(d(),y("span",ne," · session "+p(e.store.preview.entry.sessionId),1)):B("v-if",!0),_("span",null," · sha256 "+p((e.store.preview.entry?.sha256||"").slice(0,12))+"…",1)])]),_:1},8,["loading"])):B("v-if",!0)])}const de=W(H,[["render",ae],["__scopeId","data-v-c8b48f8c"],["__file","/tmp/cc-web-panel-rlCISL/repo/packages/web-panel/src/views/Artifacts.vue"]]);export{de as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{P as c,J as p,b as s}from"./vendor-Bn1JzzAn.js";import{r as a}from"./markdown-Yo_c6Krv.js";import{_ as d}from"./index-BFMPJahZ.js";const _={__name:"MarkdownRenderer",props:{content:{type:String,default:""}},setup(t,{expose:o}){o();const e=t,r=s(()=>a(e.content||"")),n={props:e,rendered:r,computed:s,get renderMarkdown(){return a}};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}},i=["innerHTML"];function l(t,o,e,r,n,m){return c(),p("div",{class:"markdown-content",innerHTML:r.rendered},null,8,i)}const w=d(_,[["render",l],["__scopeId","data-v-0b0b9f63"],["__file","/tmp/cc-web-panel-rlCISL/repo/packages/web-panel/src/components/MarkdownRenderer.vue"]]);export{w as M};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as h,P as d,J as u,U as s,R as n,c as i,K as v,Q as _,V as g,b as a}from"./vendor-Bn1JzzAn.js";import{_ as w}from"./index-BFMPJahZ.js";import"./icons-DG5UD-6K.js";const k={__name:"OrderTableRenderer",props:{event:{type:Object,required:!0}},setup(p,{expose:r}){r();const o=p,e=a(()=>o.event.content||{}),l=a(()=>o.event.extra||{}),m=a(()=>l.value.merchant||e.value.merchant||e.value.counterparty||"—"),c=a(()=>e.value.title||e.value.name||e.value.itemName||e.value.text||"—"),y=a(()=>{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=a(()=>l.value.orderNo||e.value.orderNo||e.value.orderId),f=a(()=>e.value.status||e.value.state),S=a(()=>{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"}),b=a(()=>{if(!o.event.occurredAt)return"";const t=new Date(o.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:o,c:e,e:l,merchantText:m,itemText:c,amountText:y,orderNo:T,statusText:f,statusColor:S,formattedTime:b,computed:a};return Object.defineProperty(x,"__isScriptSetup",{enumerable:!1,value:!0}),x}},N={class:"order-card"},C={class:"head"},O={class:"time"},V={class:"row"},I={class:"val"},R={class:"row"},B={class:"val"},D={class:"row amount-row"},j={class:"val amount"},A={key:0,class:"row"},F={class:"val mono"},L={key:1,class:"row"};function M(p,r,o,e,l,m){const c=h("a-tag");return d(),u("div",N,[s("div",C,[s("span",O,n(e.formattedTime),1),i(c,{color:"gold"},{default:v(()=>[_(n(o.event.source.adapter),1)]),_:1}),i(c,null,{default:v(()=>[_(n(o.event.subtype),1)]),_:1})]),s("div",V,[r[0]||(r[0]=s("span",{class:"key"},"商户",-1)),s("span",I,n(e.merchantText),1)]),s("div",R,[r[1]||(r[1]=s("span",{class:"key"},"商品/项目",-1)),s("span",B,n(e.itemText),1)]),s("div",D,[r[2]||(r[2]=s("span",{class:"key"},"金额",-1)),s("span",j,n(e.amountText),1)]),e.orderNo?(d(),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?(d(),u("div",L,[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=w(k,[["render",M],["__scopeId","data-v-5ed5524d"],["__file","/tmp/cc-web-panel-rlCISL/repo/packages/web-panel/src/components/pdh/renderers/OrderTableRenderer.vue"]]);export{J as default};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./ChatBubbleRenderer-Crsqn0B1.js","./vendor-Bn1JzzAn.js","./index-BFMPJahZ.js","./icons-DG5UD-6K.js","./index-Cq93VfoF.css","./ChatBubbleRenderer-gy5SDGw2.css","./OrderTableRenderer-Ch-HjmbS.js","./OrderTableRenderer-CfrDjSHT.css","./TimelineRenderer-Biz2ENj5.js","./TimelineRenderer-BlTAtkOc.css","./EmailListRenderer-Cb1YonC_.js","./EmailListRenderer-DTPZPx_S.css","./GenericCardRenderer-BRaf18hh.js","./GenericCardRenderer-o85VDYQS.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{E as ue,r as R,b as C,I as g,P as u,J as O,U as v,c,S as w,V as E,_ as M,F as V,Z as se,a0 as le,R as L,K as m,Q as b,W as A,o as J}from"./vendor-Bn1JzzAn.js";import{u as U}from"./usePersonalDataHub-CTNJrVC8.js";import{_ as F,e as I,d as P}from"./index-BFMPJahZ.js";import{aa as q,ag as Q,M as z,aI as G,v as H,aH as K,aq as W,ac as Y,e as de,d as fe,k as pe,ai as me,aA as _e,R as ye}from"./icons-DG5UD-6K.js";import"./useShellMode-CgR0wCYM.js";const T=Object.freeze({q:"",category:null,adapter:null,subtype:null,since:null,until:null}),B=50,Z=300,X=ue("pdhBrowser",()=>{const r=R({...T}),t=R([]),n=R(null),e=R(!1),o=R(!1),l=R(null),a=R(null),s=R(!1),i=R({byCategory:{},byAdapter:{},bySubtype:{},total:0});let d=0,_=null;const x=C(()=>t.value.length>0),j=C(()=>n.value!=null);function h(S={}){const p={},f=r.value;return f.q&&f.q.trim()&&(p.q=f.q.trim()),f.category&&(p.category=f.category),f.adapter&&(p.adapter=f.adapter),f.subtype&&(p.subtype=f.subtype),Number.isFinite(f.since)&&(p.since=f.since),Number.isFinite(f.until)&&(p.until=f.until),{...p,...S}}async function y(){const S=++d;e.value=!0,l.value=null;const p=U();try{const[f,D]=await Promise.all([p.searchEvents(h({limit:B})),p.facetCounts({...r.value.q&&r.value.q.trim()?{q:r.value.q.trim()}:{},...Number.isFinite(r.value.since)?{since:r.value.since}:{},...Number.isFinite(r.value.until)?{until:r.value.until}:{}})]);if(S!==d)return;t.value=f.rows||[],n.value=f.nextCursor||null,a.value=f.mode||"like",s.value=!!f.shortQuery,i.value={byCategory:D.byCategory||{},byAdapter:D.byAdapter||{},bySubtype:D.bySubtype||{},total:D.total||0}}catch(f){if(S!==d)return;l.value=f&&f.message?f.message:String(f),t.value=[],n.value=null}finally{S===d&&(e.value=!1)}}async function k(){if(!n.value||o.value)return;o.value=!0,l.value=null;const S=U();try{const p=await S.searchEvents(h({cursor:n.value,limit:B}));t.value=t.value.concat(p.rows||[]),n.value=p.nextCursor||null,a.value=p.mode||a.value}catch(p){l.value=p&&p.message?p.message:String(p)}finally{o.value=!1}}function ae(S,p){if(!(S in T))throw new Error(`pdhBrowser.setFilter: unknown key "${S}"`);r.value={...r.value,[S]:p},_&&clearTimeout(_),_=setTimeout(()=>{_=null,y()},Z)}function ie(S){return r.value={...T,...S},_&&(clearTimeout(_),_=null),y()}function ce(){r.value={...T},t.value=[],n.value=null,l.value=null,i.value={byCategory:{},byAdapter:{},bySubtype:{},total:0}}return{filters:r,results:t,cursor:n,isLoading:e,isAppending:o,error:l,mode:a,shortQuery:s,facets:i,hasResults:x,canLoadMore:j,search:y,loadMore:k,setFilter:ae,setFilters:ie,reset:ce,PAGE_SIZE:B,SEARCH_DEBOUNCE_MS:Z}}),ge=Object.freeze(["chat","social","email","shopping","travel","system","ai-chat","other"]),ve=Object.freeze({chat:"社交聊天",social:"内容平台",email:"邮件",shopping:"支付订单",travel:"出行",system:"系统数据","ai-chat":"AI 对话",other:"其他"});function N(r){return ve[r]||r||"未知"}const be=Object.freeze([["wechat","chat"],["messaging-","chat"],["social-","social"],["email-","email"],["shopping-","shopping"],["alipay-","shopping"],["travel-","travel"],["system-data","system"],["browser-","system"],["meeting-","system"],["vscode","system"],["vscodium","system"],["jetbrains-ide","system"],["win-recent","system"],["git-activity","system"],["shell-history","system"],["hbuilderx","system"],["local-files","system"],["cursor","ai-chat"],["claude-code","ai-chat"],["ai-chat-","ai-chat"]]);function $(r){if(typeof r!="string"||r.length===0)return"other";for(const[t,n]of be)if(t.endsWith("-")||t==="system-data"){if(r.startsWith(t))return n}else if(r===t)return n;return"other"}const he={__name:"CategorySidebar",props:{selected:{type:String,default:null},facets:{type:Object,default:()=>({byCategory:{},total:0})}},emits:["select"],setup(r,{expose:t}){t();const n=r,e=C(()=>n.facets.total||0),o={chat:Y,social:W,email:K,shopping:H,travel:G,system:z,"ai-chat":Q,other:q};function l(i){return o[i]||q}function a(i){return i?{backgroundColor:"#fff",color:"#1677ff"}:{backgroundColor:"#f0f0f0",color:"#666"}}const s={props:n,total:e,ICONS:o,iconFor:l,badgeStyle:a,computed:C,get AppstoreOutlined(){return q},get MessageOutlined(){return Y},get PlayCircleOutlined(){return W},get MailOutlined(){return K},get ShoppingOutlined(){return H},get CarOutlined(){return G},get MobileOutlined(){return z},get RobotOutlined(){return Q},get CATEGORIES(){return ge},get categoryLabel(){return N}};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}},Se={class:"pdh-sidebar"},Oe=["onClick"],Ce={class:"label"};function we(r,t,n,e,o,l){const a=g("a-badge");return u(),O("div",Se,[t[2]||(t[2]=v("div",{class:"sidebar-title"},"数据类型",-1)),v("div",{class:M(["cat-item",{active:n.selected===null}]),onClick:t[0]||(t[0]=s=>r.$emit("select",null))},[c(e.AppstoreOutlined,{class:"icon"}),t[1]||(t[1]=v("span",{class:"label"},"全部",-1)),e.total>0?(u(),w(a,{key:0,count:e.total,"number-style":e.badgeStyle(n.selected===null),"overflow-count":9999},null,8,["count","number-style"])):E("v-if",!0)],2),(u(!0),O(V,null,se(e.CATEGORIES,s=>(u(),O("div",{key:s,class:M(["cat-item",{active:n.selected===s,dim:!n.facets.byCategory[s]}]),onClick:i=>r.$emit("select",s)},[(u(),w(le(e.iconFor(s)),{class:"icon"})),v("span",Ce,L(e.categoryLabel(s)),1),n.facets.byCategory[s]?(u(),w(a,{key:0,count:n.facets.byCategory[s],"number-style":e.badgeStyle(n.selected===s),"overflow-count":9999},null,8,["count","number-style"])):E("v-if",!0)],10,Oe))),128))])}const ke=F(he,[["render",we],["__scopeId","data-v-6b62a22e"],["__file","/tmp/cc-web-panel-rlCISL/repo/packages/web-panel/src/components/pdh/CategorySidebar.vue"]]),Ee={__name:"SearchFilterBar",props:{filters:{type:Object,required:!0},facets:{type:Object,default:()=>({byAdapter:{}})},isLoading:{type:Boolean,default:!1},mode:{type:String,default:null},shortQuery:{type:Boolean,default:!1}},emits:["set-filter","reset"],setup(r,{expose:t,emit:n}){t();const e=r,o=n,l=C(()=>e.filters.category?`在「${e.filters.category}」类目内搜索…`:"搜索关键词(如:支付宝、罗技、Kotlin)…"),a=C(()=>Object.entries(e.facets.byAdapter||{}).sort((y,k)=>k[1]-y[1]).map(([y,k])=>({value:y,label:`${y} (${k})`}))),s=C(()=>!e.filters.since&&!e.filters.until?null:[e.filters.since?new Date(e.filters.since):null,e.filters.until?new Date(e.filters.until):null]),i=C(()=>!!(e.filters.q||e.filters.adapter||e.filters.subtype||e.filters.since||e.filters.until));function d(h){o("set-filter","q",h||"")}function _(h){o("set-filter","q",h||"")}function x(h){if(!h||h.length===0){o("set-filter","since",null),o("set-filter","until",null);return}const[y,k]=h;o("set-filter","since",y?+y:null),o("set-filter","until",k?+k:null)}const j={props:e,emit:o,placeholderText:l,adapterOptions:a,dateRangeValue:s,hasActiveFilters:i,onQInput:d,onSearch:_,onDateChange:x,computed:C,get SearchOutlined(){return pe},get CloseCircleOutlined(){return fe},get InfoCircleOutlined(){return de}};return Object.defineProperty(j,"__isScriptSetup",{enumerable:!1,value:!0}),j}},Re={class:"pdh-filter-bar"},Le={key:1,class:"hint"},xe={key:2,class:"hint"};function je(r,t,n,e,o,l){const a=g("a-input-search"),s=g("a-select"),i=g("a-range-picker"),d=g("a-button");return u(),O("div",Re,[c(a,{value:n.filters.q,placeholder:e.placeholderText,"enter-button":"搜索","allow-clear":"",loading:n.isLoading,style:{flex:"1","max-width":"480px"},"onUpdate:value":e.onQInput,onSearch:e.onSearch},{prefix:m(()=>[c(e.SearchOutlined)]),_:1},8,["value","placeholder","loading"]),c(s,{value:n.filters.adapter,placeholder:"所有 adapter","allow-clear":"",options:e.adapterOptions,style:{width:"200px"},"onUpdate:value":t[0]||(t[0]=_=>r.$emit("set-filter","adapter",_||null))},null,8,["value","options"]),c(i,{value:e.dateRangeValue,placeholder:["开始日期","结束日期"],style:{width:"280px"},"onUpdate:value":e.onDateChange},null,8,["value"]),e.hasActiveFilters?(u(),w(d,{key:0,type:"link",danger:"",onClick:t[1]||(t[1]=_=>r.$emit("reset"))},{icon:m(()=>[c(e.CloseCircleOutlined)]),default:m(()=>[t[2]||(t[2]=b(" 清空筛选 ",-1))]),_:1})):E("v-if",!0),n.shortQuery?(u(),O("span",Le,[c(e.InfoCircleOutlined),t[3]||(t[3]=b(" 关键词需至少 3 字 (FTS5 trigram 限制) ",-1))])):n.mode==="like"?(u(),O("span",xe,[c(e.InfoCircleOutlined),t[4]||(t[4]=b(" 当前为 LIKE 兜底模式 ",-1))])):E("v-if",!0)])}const Ae=F(Ee,[["render",je],["__scopeId","data-v-d7cce6e9"],["__file","/tmp/cc-web-panel-rlCISL/repo/packages/web-panel/src/components/pdh/SearchFilterBar.vue"]]),Ie={__name:"RendererDispatcher",props:{event:{type:Object,required:!0}},setup(r,{expose:t}){t();const n=A(()=>I(()=>import("./ChatBubbleRenderer-Crsqn0B1.js"),__vite__mapDeps([0,1,2,3,4,5]),import.meta.url)),e=A(()=>I(()=>import("./OrderTableRenderer-Ch-HjmbS.js"),__vite__mapDeps([6,1,2,3,4,7]),import.meta.url)),o=A(()=>I(()=>import("./TimelineRenderer-Biz2ENj5.js"),__vite__mapDeps([8,1,2,3,4,9]),import.meta.url)),l=A(()=>I(()=>import("./EmailListRenderer-Cb1YonC_.js"),__vite__mapDeps([10,1,2,3,4,11]),import.meta.url)),a=A(()=>I(()=>import("./GenericCardRenderer-BRaf18hh.js"),__vite__mapDeps([12,1,2,3,4,13]),import.meta.url));function s(d){const _=d&&d.source&&d.source.adapter;switch($(_)){case"chat":case"ai-chat":return n;case"shopping":return e;case"travel":return o;case"email":return l;default:return a}}const i={ChatBubbleRenderer:n,OrderTableRenderer:e,TimelineRenderer:o,EmailListRenderer:l,GenericCardRenderer:a,rendererFor:s,defineAsyncComponent:A,get getCategory(){return $}};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}};function Fe(r,t,n,e,o,l){return u(),w(le(e.rendererFor(n.event)),{event:n.event},null,8,["event"])}const De=F(Ie,[["render",Fe],["__file","/tmp/cc-web-panel-rlCISL/repo/packages/web-panel/src/components/pdh/renderers/RendererDispatcher.vue"]]);function ee(r){return JSON.stringify(r,null,2)}function te(r){return r.map(t=>JSON.stringify(t)).join(`
|
|
3
|
-
`)+`
|
|
4
|
-
`}function ne(r){const n=["id","subtype","occurredAt","occurredAtIso","actor","place","adapter","summary","contentJson","extraJson"].join(","),e=r.map(o=>{const l=Number.isFinite(o.occurredAt)?o.occurredAt:null,a=l?new Date(l).toISOString():"",s=o.source&&o.source.adapter||"",i=o.content&&(o.content.text||o.content.title||o.content.subject)||"";return[o.id||"",o.subtype||"",l!=null?String(l):"",a,o.actor||"",o.place||"",s,i,o.content?JSON.stringify(o.content):"",o.extra?JSON.stringify(o.extra):""].map(Te).join(",")});return[n,...e].join(`
|
|
5
|
-
`)+`
|
|
6
|
-
`}function Te(r){const t=String(r??"");return t.includes(",")||t.includes('"')||t.includes(`
|
|
7
|
-
`)||t.includes("\r")?'"'+t.replace(/"/g,'""')+'"':t}function re(r,t,n="application/octet-stream"){if(typeof window>"u"||typeof document>"u")return t;const e=new Blob([r],{type:n}),o=URL.createObjectURL(e),l=document.createElement("a");return l.href=o,l.download=t,document.body.appendChild(l),l.click(),document.body.removeChild(l),setTimeout(()=>URL.revokeObjectURL(o),1e3),t}function oe(r,t=null){const n=new Date,e=n.getFullYear(),o=String(n.getMonth()+1).padStart(2,"0"),l=String(n.getDate()).padStart(2,"0"),a=r==="ndjson"?"ndjson":r,s=t?`-${t}`:"";return`pdh-events-${e}-${o}-${l}${s}.${a}`}const Pe={__name:"ExportDropdown",props:{events:{type:Array,required:!0},category:{type:String,default:null}},setup(r,{expose:t}){t();const n=r,e=C(()=>n.events.length>0),o={json:"application/json;charset=utf-8",ndjson:"application/x-ndjson;charset=utf-8",csv:"text/csv;charset=utf-8"};function l(i){switch(i){case"json":return ee(n.events);case"ndjson":return te(n.events);case"csv":return ne(n.events);default:throw new Error(`unknown format: ${i}`)}}function a({key:i}){try{const d=l(i),_=oe(i,n.category);re(d,_,o[i]),P.success(`已导出 ${n.events.length} 条到 ${_}`)}catch(d){P.error(`导出失败: ${d.message||d}`)}}const s={props:n,hasResults:e,MIME:o,serialize:l,onClick:a,computed:C,get DownloadOutlined(){return _e},get DownOutlined(){return me},get message(){return P},get eventsToJson(){return ee},get eventsToNdjson(){return te},get eventsToCsv(){return ne},get downloadAs(){return re},get suggestFilename(){return oe}};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}};function qe(r,t,n,e,o,l){const a=g("a-button"),s=g("a-menu-item"),i=g("a-menu"),d=g("a-dropdown");return u(),w(d,{disabled:!e.hasResults},{overlay:m(()=>[c(i,{onClick:e.onClick},{default:m(()=>[c(s,{key:"json"},{default:m(()=>[...t[0]||(t[0]=[b("JSON (.json)",-1)])]),_:1}),c(s,{key:"ndjson"},{default:m(()=>[...t[1]||(t[1]=[b("NDJSON (.ndjson)",-1)])]),_:1}),c(s,{key:"csv"},{default:m(()=>[...t[2]||(t[2]=[b("CSV (.csv)",-1)])]),_:1})]),_:1})]),default:m(()=>[c(a,{disabled:!e.hasResults},{icon:m(()=>[c(e.DownloadOutlined)]),default:m(()=>[b(" 导出 ("+L(n.events.length)+") ",1),c(e.DownOutlined)]),_:1},8,["disabled"])]),_:1},8,["disabled"])}const Be=F(Pe,[["render",qe],["__file","/tmp/cc-web-panel-rlCISL/repo/packages/web-panel/src/components/pdh/ExportDropdown.vue"]]),Ve={__name:"PdhVaultBrowser",setup(r,{expose:t}){t();const n=X(),e=C(()=>n.filters.q?`没有匹配 "${n.filters.q}" 的事件 — 试试更短的关键词或换个类目`:n.filters.category?`「${N(n.filters.category)}」类目下还没有数据 — 去采集页同步对应 adapter`:"Vault 里还没有数据 — 去「个人数据中台」页面同步任意 adapter");function o(s){n.filters.category=s,n.search()}function l(s,i){n.setFilter(s,i)}J(()=>{!n.hasResults&&!n.isLoading&&n.search()});const a={store:n,emptyHint:e,onCategorySelect:o,onSetFilter:l,onMounted:J,computed:C,get ReloadOutlined(){return ye},get usePdhBrowserStore(){return X},get categoryLabel(){return N},CategorySidebar:ke,SearchFilterBar:Ae,RendererDispatcher:De,ExportDropdown:Be};return Object.defineProperty(a,"__isScriptSetup",{enumerable:!1,value:!0}),a}},Ne={class:"pdh-browser-page"},Me={class:"page-header"},Je={class:"main-pane"},Ue={class:"results-summary"},Qe={key:0},ze={key:0},Ge={key:1},He={class:"loaded-of"},Ke={class:"results-list"},We={key:2,class:"load-more"};function Ye(r,t,n,e,o,l){const a=g("a-tag"),s=g("a-button"),i=g("a-space"),d=g("a-col"),_=g("a-spin"),x=g("a-alert"),j=g("a-empty"),h=g("a-row");return u(),O("div",Ne,[v("div",Me,[t[6]||(t[6]=v("div",null,[v("h2",{class:"page-title"},"数据浏览器"),v("p",{class:"page-sub"}," Vault 里所有已采集的数据,按类目浏览 / 全文检索 / 时间窗口筛选。 完全离线,不外传。 ")],-1)),c(i,null,{default:m(()=>[e.store.mode==="fts5"?(u(),w(a,{key:0,color:"green"},{default:m(()=>[...t[3]||(t[3]=[b("FTS5 trigram",-1)])]),_:1})):e.store.mode==="like"?(u(),w(a,{key:1,color:"orange"},{default:m(()=>[...t[4]||(t[4]=[b("LIKE 兜底",-1)])]),_:1})):E("v-if",!0),c(e.ExportDropdown,{events:e.store.results,category:e.store.filters.category},null,8,["events","category"]),c(s,{onClick:t[0]||(t[0]=y=>e.store.search()),loading:e.store.isLoading},{icon:m(()=>[c(e.ReloadOutlined)]),default:m(()=>[t[5]||(t[5]=b(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),c(h,{gutter:16,class:"browser-layout"},{default:m(()=>[c(d,{xs:24,sm:24,md:6,lg:5,xl:4},{default:m(()=>[c(e.CategorySidebar,{selected:e.store.filters.category,facets:e.store.facets,onSelect:e.onCategorySelect},null,8,["selected","facets"])]),_:1}),c(d,{xs:24,sm:24,md:18,lg:19,xl:20},{default:m(()=>[v("div",Je,[c(e.SearchFilterBar,{filters:e.store.filters,facets:e.store.facets,"is-loading":e.store.isLoading,mode:e.store.mode,"short-query":e.store.shortQuery,onSetFilter:e.onSetFilter,onReset:t[1]||(t[1]=y=>{e.store.reset(),e.store.search()})},null,8,["filters","facets","is-loading","mode","short-query"]),v("div",Ue,[e.store.isLoading&&e.store.results.length===0?(u(),O("span",Qe,[c(_,{size:"small"}),t[7]||(t[7]=b(" 载入中… ",-1))])):(u(),O(V,{key:1},[v("strong",null,L(e.store.facets.total),1),t[11]||(t[11]=b(" 条事件 ",-1)),e.store.filters.category?(u(),O("span",ze,[t[8]||(t[8]=b(" / 当前类目 ",-1)),v("strong",null,L(e.categoryLabel(e.store.filters.category)),1),v("strong",null,L(e.store.facets.byCategory[e.store.filters.category]||0),1)])):E("v-if",!0),e.store.filters.q?(u(),O("span",Ge,[t[9]||(t[9]=b(' / 关键词 "',-1)),v("em",null,L(e.store.filters.q),1),t[10]||(t[10]=b('"',-1))])):E("v-if",!0),v("span",He," / 已显示 "+L(e.store.results.length),1)],64))]),e.store.error?(u(),w(x,{key:0,type:"error","show-icon":"",message:e.store.error,closable:"",style:{margin:"12px 0"}},null,8,["message"])):E("v-if",!0),!e.store.isLoading&&e.store.results.length===0&&!e.store.error?(u(),w(j,{key:1,description:e.emptyHint,style:{"margin-top":"40px"}},null,8,["description"])):E("v-if",!0),v("div",Ke,[(u(!0),O(V,null,se(e.store.results,(y,k)=>(u(),w(e.RendererDispatcher,{key:`r-${k}-${y.id}`,event:y},null,8,["event"]))),128))]),e.store.canLoadMore?(u(),O("div",We,[c(s,{loading:e.store.isAppending,onClick:t[2]||(t[2]=y=>e.store.loadMore()),block:""},{default:m(()=>[...t[12]||(t[12]=[b(" 加载下一页 (50 条) ",-1)])]),_:1},8,["loading"])])):E("v-if",!0)])]),_:1})]),_:1})])}const nt=F(Ve,[["render",Ye],["__scopeId","data-v-0f7c02cd"],["__file","/tmp/cc-web-panel-rlCISL/repo/packages/web-panel/src/views/PdhVaultBrowser.vue"]]);export{nt as default};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{I as u,J as z,U as y,c as n,K as r,a as I,r as P,o as M,b as h,P as B,Q as j,S as A,V as F}from"./vendor-Bn1JzzAn.js";import{t as J,_ as L,u as N,d as _}from"./index-BFMPJahZ.js";import{a8 as W,R as K}from"./icons-DG5UD-6K.js";const c=Object.freeze({rootPath:"",maxSizeMB:1e3,autoSync:!1,syncIntervalSeconds:300});function U(o){if(typeof o=="boolean")return o;const e=String(o).trim().toLowerCase();return e==="true"||e==="1"||e==="yes"||e==="on"}function w(o,e){if(typeof o=="number"&&Number.isFinite(o))return o;const a=parseFloat(o);return Number.isFinite(a)?a:e}function R(o){const e={...c};if(!o)return e;const a=o.trim();if(!a||/key not found/i.test(a))return e;const t=J(a);if(t&&typeof t=="object"&&!Array.isArray(t))return t.rootPath!==void 0&&(e.rootPath=String(t.rootPath||"")),t.maxSizeMB!==void 0&&(e.maxSizeMB=w(t.maxSizeMB,c.maxSizeMB)),t.autoSync!==void 0&&(e.autoSync=U(t.autoSync)),t.syncIntervalSeconds!==void 0&&(e.syncIntervalSeconds=w(t.syncIntervalSeconds,c.syncIntervalSeconds)),e;const v=a.split(`
|
|
2
|
-
`);for(const d of v){const p=d.trim().match(/^(?:project\.)?(rootPath|maxSizeMB|autoSync|syncIntervalSeconds)\s*[=:]\s*(.+)$/i);if(!p)continue;const f=p[1],i=p[2].trim();f==="rootPath"?e.rootPath=i:f==="maxSizeMB"?e.maxSizeMB=w(i,c.maxSizeMB):f==="autoSync"?e.autoSync=U(i):f==="syncIntervalSeconds"&&(e.syncIntervalSeconds=w(i,c.syncIntervalSeconds))}return e}function O(o,e){const a={};for(const t of Object.keys(c))o[t]!==e[t]&&(a[t]=e[t]);return a}const Q={__name:"ProjectSettings",setup(o,{expose:e}){e();const a=N(),t=P(!1),v=P(!1),d=I({...c}),s=P({...c}),p=h(()=>Object.keys(O(s.value,d)).length>0);async function f(){t.value=!0;try{const{output:m}=await a.execute("config get project",1e4),g=R(m);Object.assign(d,g),s.value={...g}}catch(m){/key not found/i.test(m.message)?(Object.assign(d,c),s.value={...c}):_.error("加载配置失败: "+m.message)}finally{t.value=!1}}function i(){Object.assign(d,s.value)}async function x(){const m=O(s.value,d),g=Object.keys(m);if(g.length===0){_.info("没有需要保存的修改");return}v.value=!0;let b=0,S=0;for(const l of g){const D=m[l],E=String(D).replace(/"/g,'\\"'),T=`config set project.${l} "${E}"`;try{const{output:C,exitCode:V}=await a.execute(T,1e4);V!==0||/error|failed|失败/i.test(C)?(S++,_.error(`保存 ${l} 失败: ${C.slice(0,80)}`)):b++}catch(C){S++,_.error(`保存 ${l} 失败: ${C.message}`)}}v.value=!1,S===0?(_.success(`保存成功(${b} 项)`),s.value={...d}):b>0&&(_.warning(`部分保存成功:${b} 成功 / ${S} 失败`),await f())}M(()=>{f()});const k={ws:a,loading:t,saving:v,form:d,baseline:s,isDirty:p,loadConfig:f,resetForm:i,saveConfig:x,reactive:I,ref:P,computed:h,onMounted:M,get ReloadOutlined(){return K},get FolderOutlined(){return W},get message(){return _},get useWsStore(){return N},get parseProjectConfig(){return R},get diffProjectConfig(){return O},get PROJECT_DEFAULTS(){return c}};return Object.defineProperty(k,"__isScriptSetup",{enumerable:!1,value:!0}),k}},q={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},G={style:{color:"var(--text-primary)"}},H={key:0,style:{color:"#faad14","font-size":"12px","margin-left":"8px"}};function X(o,e,a,t,v,d){const s=u("a-button"),p=u("a-alert"),f=u("a-input"),i=u("a-form-item"),x=u("a-input-number"),k=u("a-switch"),m=u("a-space"),g=u("a-form"),b=u("a-spin"),S=u("a-card");return B(),z("div",null,[y("div",q,[e[5]||(e[5]=y("div",null,[y("h2",{class:"page-title"},"项目存储配置"),y("p",{class:"page-sub"},"根目录 / 配额 / 自动同步")],-1)),n(s,{loading:t.loading,onClick:t.loadConfig},{icon:r(()=>[n(t.ReloadOutlined)]),default:r(()=>[e[4]||(e[4]=j(" 刷新 ",-1))]),_:1},8,["loading"])]),n(p,{message:"仅 Web 模式",description:"目录选择器(原生文件对话框)仅在桌面端可用,本页面需手动输入路径。修改根目录后需重启桌面应用生效;web 端只影响后端配置文件。",type:"info","show-icon":"",closable:"",style:{"margin-bottom":"16px"}}),n(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{title:r(()=>[y("span",G,[n(t.FolderOutlined,{style:{"margin-right":"8px"}}),e[6]||(e[6]=j("项目存储 ",-1))])]),default:r(()=>[n(b,{spinning:t.loading},{default:r(()=>[n(g,{"label-col":{span:6},"wrapper-col":{span:18},style:{"max-width":"720px"}},{default:r(()=>[n(i,{label:"项目根目录"},{extra:r(()=>[...e[7]||(e[7]=[y("span",{style:{color:"var(--text-muted)","font-size":"11px"}}," 需绝对路径;修改后重启桌面应用生效 ",-1)])]),default:r(()=>[n(f,{value:t.form.rootPath,"onUpdate:value":e[0]||(e[0]=l=>t.form.rootPath=l),placeholder:"项目文件存储的根目录绝对路径",disabled:t.saving},null,8,["value","disabled"])]),_:1}),n(i,{label:"最大项目大小"},{default:r(()=>[n(x,{value:t.form.maxSizeMB,"onUpdate:value":e[1]||(e[1]=l=>t.form.maxSizeMB=l),min:100,max:1e4,step:100,"addon-after":"MB",style:{width:"220px"},disabled:t.saving},null,8,["value","disabled"])]),_:1}),n(i,{label:"自动同步"},{default:r(()=>[n(k,{checked:t.form.autoSync,"onUpdate:checked":e[2]||(e[2]=l=>t.form.autoSync=l),disabled:t.saving},null,8,["checked","disabled"]),e[8]||(e[8]=y("span",{style:{"margin-left":"12px",color:"var(--text-secondary)","font-size":"12px"}}," 自动同步项目到后端服务器 ",-1))]),_:1}),t.form.autoSync?(B(),A(i,{key:0,label:"同步间隔"},{default:r(()=>[n(x,{value:t.form.syncIntervalSeconds,"onUpdate:value":e[3]||(e[3]=l=>t.form.syncIntervalSeconds=l),min:60,max:3600,step:60,"addon-after":"秒",style:{width:"220px"},disabled:t.saving},null,8,["value","disabled"])]),_:1})):F("v-if",!0),n(i,{"wrapper-col":{offset:6,span:18}},{default:r(()=>[n(m,null,{default:r(()=>[n(s,{onClick:t.resetForm,disabled:t.saving||t.loading},{default:r(()=>[...e[9]||(e[9]=[j(" 重置 ",-1)])]),_:1},8,["disabled"]),n(s,{type:"primary",loading:t.saving,disabled:!t.isDirty,onClick:t.saveConfig},{default:r(()=>[...e[10]||(e[10]=[j(" 保存配置 ",-1)])]),_:1},8,["loading","disabled"]),t.isDirty?(B(),z("span",H," 有未保存的修改 ")):F("v-if",!0)]),_:1})]),_:1})]),_:1})]),_:1},8,["spinning"])]),_:1})])}const ee=L(Q,[["render",X],["__scopeId","data-v-f4cc2f66"],["__file","/tmp/cc-web-panel-rlCISL/repo/packages/web-panel/src/views/ProjectSettings.vue"]]);export{ee as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Q as r}from"./index-BFMPJahZ.js";const o=((n,a,e)=>{r(n,`[ant-design-vue: ${a}] ${e}`)});export{o as d};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{C as o}from"./Col-C5TaXHn9.js";import{a0 as t}from"./index-BFMPJahZ.js";import"./vendor-Bn1JzzAn.js";import"./index-BRpfrG-e.js";import"./icons-DG5UD-6K.js";const s=t(o);export{s as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{A as o}from"./Row-DVYQoXil.js";import{a0 as t}from"./index-BFMPJahZ.js";import"./vendor-Bn1JzzAn.js";import"./responsiveObserve-hyHNGoSW.js";import"./useFlexGapSupport-C-vv_T11.js";import"./styleChecker-Bz1ZKvoD.js";import"./index-BRpfrG-e.js";import"./icons-DG5UD-6K.js";const l=t(o);export{l as default};
|