chainlesschain 0.166.43 → 0.166.45
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 +75 -14
- package/package.json +3 -3
- package/src/assets/web-panel/.build-hash +1 -1
- package/src/assets/web-panel/assets/{AIOps-BIl-Z62M.js → AIOps-CrMhYNeH.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-BgPi_Te6.js → ActionButton-DLY5blZ3.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-CaNIzlAG.js → Analytics-C0NhKQB0.js} +2 -2
- package/src/assets/web-panel/assets/{AppLayout-D9GSx2hl.js → AppLayout-DLyepgMq.js} +5 -5
- package/src/assets/web-panel/assets/{Artifacts-Kq7kotzv.js → Artifacts-Depk01Sa.js} +1 -1
- package/src/assets/web-panel/assets/{Audit-e1RTJLco.js → Audit-jKe6NQ3J.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-BfyNT0BW.js → BackgroundAgents-CG4GKT9s.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-BEAq7i6S.js → Backup-DYWCkzwM.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-BHuP82DF.js → BaseInput-xm5vodmJ.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-BLPgCQsB.js → Chat-B20_PNd3.js} +5 -5
- package/src/assets/web-panel/assets/ChatBubbleRenderer-D4d-eh0F.js +1 -0
- package/src/assets/web-panel/assets/{Checkbox-DDJrOqEh.js → Checkbox-CfgwkV_r.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-CxyKcM6S.js → Codegen-DbnoWI44.js} +1 -1
- package/src/assets/web-panel/assets/{Col-BYFh9rE1.js → Col-CfzzhgGw.js} +1 -1
- package/src/assets/web-panel/assets/{Community-D8JPppoh.js → Community-BU7mGM8p.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-B5VGSqZe.js → Compact-DpYim0an.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-C7KiFcUK.js → Compliance-BNJcO6ra.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-D-F2fgA_.js → Cowork-CecZ-pWj.js} +2 -2
- package/src/assets/web-panel/assets/{Cron-B6TmPqRO.js → Cron-BG_C1fe3.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-BeGcBXhk.js → Crosschain-BAeILQLL.js} +1 -1
- package/src/assets/web-panel/assets/{DID-9QklLcmQ.js → DID-CYqOEkXi.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-DIadmsuS.js → Dashboard-BYU8wmL1.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-0I5gks3i.js → Dropdown-DYlJeTTa.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-BdTAjT2q.js → EmailListRenderer-C0M6py3K.js} +1 -1
- package/src/assets/web-panel/assets/EvolutionSettings-_QnjPFZJ.js +1 -0
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-DQUQWwUY.js → FamilyGuardDashboard-Du90iDch.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-Drgi--Zn.js → Federation-DkFp_hzB.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-BOf-9P8n.js → FormItemContext-BGgtGTfG.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-CBBnIDaW.js → GenericCardRenderer-BIDsSCei.js} +1 -1
- package/src/assets/web-panel/assets/{Git-BKimGd5P.js → Git--d3Te93J.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-DoXCXppu.js → Governance-CZwD0vmO.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-DzOhGhOE.js → Inference-DiDcSFEW.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-DawgmU58.js → KnowledgeGraph-Bi0hSfzg.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-Co3EJL2Y.js → Logs-C8NHSc0K.js} +2 -2
- package/src/assets/web-panel/assets/{MarkdownRenderer-VUfiDRZN.js → MarkdownRenderer-DfDuADqF.js} +1 -1
- package/src/assets/web-panel/assets/{Marketplace-BqpMHnMW.js → Marketplace-D6kD0bNf.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-C7ZSokcR.js → McpTools-mTSamCr5.js} +2 -2
- package/src/assets/web-panel/assets/{Memory-DuJrpeDx.js → Memory-YQBXfLjU.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-CaM744NU.js → MobileBridge-D2awuupp.js} +1 -1
- package/src/assets/web-panel/assets/MobileProjects-Bl7lZc_-.js +1 -0
- package/src/assets/web-panel/assets/{Mtc-5oUB7lPh.js → Mtc-CBqjLK2Q.js} +5 -5
- package/src/assets/web-panel/assets/{MtcAudit-D9DNF6DB.js → MtcAudit-C4poRInZ.js} +2 -2
- package/src/assets/web-panel/assets/{Multisig-CfMpFQSr.js → Multisig-C_J0zXYZ.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-CuhPZQ7q.js → NLProgramming-Ci43sWOU.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-NtSeMoyM.js → Notes-DN7A-GFZ.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-CB4e7V83.js → NotificationSettings-D5jNm71V.js} +1 -1
- package/src/assets/web-panel/assets/OrderTableRenderer-C9UsPOG8.js +1 -0
- package/src/assets/web-panel/assets/{Organization-K_0bjm7y.js → Organization-BapYMJrP.js} +2 -2
- package/src/assets/web-panel/assets/{Overflow-D2vwxiPv.js → Overflow-BwxwjhFw.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-WQMHBu8q.js → P2P-TObXXOu3.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-CTZVBMZZ.js → PdhVaultBrowser-UwJvMbFO.js} +3 -3
- package/src/assets/web-panel/assets/{Permissions-DcLy9Nfp.js → Permissions-Damnxv-O.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-zc-cm-02.js → PersonalDataHub-d_7jlBb-.js} +4 -4
- package/src/assets/web-panel/assets/{Pipeline-CCnI8peM.js → Pipeline-DA87VjLw.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-DO1Xor8L.js → Privacy-DzO_UvWn.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-CZqC-jyt.js → ProjectInit-CwqECDhs.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-DqJtyavX.js → ProjectSettings-CT5YdIl6.js} +2 -2
- package/src/assets/web-panel/assets/{Projects-Dx14NAO3.js → Projects-D3KdZPCv.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-DH13a6ro.js → Providers-BjBIS8kk.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-C9bwzVfA.js → QrScannerModal-mMFqiKkI.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-Cbt-oIPf.js → QuickAsk-BwGi9ZU1.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-BYIimGcY.js → Recommend-BY65SR5s.js} +1 -1
- package/src/assets/web-panel/assets/{RemoteSession-C8OWTG1H.js → RemoteSession-BGsVH_XU.js} +2 -2
- package/src/assets/web-panel/assets/{Reputation-DpUGT_jD.js → Reputation-DpPbxSgI.js} +1 -1
- package/src/assets/web-panel/assets/{Row-DZ5Izi2A.js → Row-B5YBYoVz.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-CAn94No1.js → RssFeed-DvM5jaoh.js} +3 -3
- package/src/assets/web-panel/assets/{Search-BqNaxcgj.js → Search-6RX39EPO.js} +1 -1
- package/src/assets/web-panel/assets/{Security-Ck6vFTWn.js → Security-Beal-7cM.js} +4 -4
- package/src/assets/web-panel/assets/{Services-Y3RdvvDj.js → Services-D6rjVLe-.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-Cx9Iqcp7.js → Skeleton-Dur7R7vz.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-Oiqz7wLM.js → Skills-D1QkGwMk.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-DaKJQADm.js → Sla-3ObrX8Es.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-BWoOpPW4.js → SpeechSettings-DG_KAiH1.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-CgFle8GX.js → SyncSettings-BaHq0SJ2.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-C1tQNvWx.js → Tasks-BDpAkBAB.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-CvvycaWi.js → Templates-tYdoRd-c.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-D1FwaD12.js → Tenant-yGS5zIQ1.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-oorFjObO.js → Terminal-B3QbmVFa.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-BjMs48Sj.js → TimelineRenderer-B_7Pr5dS.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-BkRb95xG.js → Tokens-DPvpDa53.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-B94RYYAF.js → Trigger-DcSAD0GZ.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-DnBVpOWt.js → Trust-BBzEq-uy.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-DouHO6Up.js → UkeySign-Dssav7-5.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-DDgRerWV.js → VideoEditing-CPOZf4yi.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-CQN9Un7X.js → Wallet-BzBVRXEq.js} +3 -3
- package/src/assets/web-panel/assets/{WebAuthn-DyHl2G3J.js → WebAuthn-DdSGaCCh.js} +2 -2
- package/src/assets/web-panel/assets/{WorkflowEditor-BQlN77Ey.js → WorkflowEditor-CKjBFoSs.js} +1 -1
- package/src/assets/web-panel/assets/{chat-0jOqe7ZD.js → chat-B9aMGLg0.js} +1 -1
- package/src/assets/web-panel/assets/{colors-kp5TAaKx.js → colors-GFCMctSV.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-DqF6Rml7.js → compact-item-BqSDFAYJ.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-lDyLBjy5.js → createContext-BwUm3Ffp.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-LxtRBsCm.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-CkiF91kH.js → hasIn-DN1kMJOT.js} +1 -1
- package/src/assets/web-panel/assets/index-36hxBH-o.js +1 -0
- package/src/assets/web-panel/assets/{index-BvFFY-2V.js → index-7W1e9Vi4.js} +1 -1
- package/src/assets/web-panel/assets/{index-DQGk8bV8.js → index-B4MfxM5W.js} +1 -1
- package/src/assets/web-panel/assets/{index-kenTha3h.js → index-B4dI_csl.js} +1 -1
- package/src/assets/web-panel/assets/{index-B6V9l2P-.js → index-B7Yu5wwV.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bq2s5obn.js → index-B9Pe-EyB.js} +3 -3
- package/src/assets/web-panel/assets/{index-aHKeys8c.js → index-BBMW8bQO.js} +1 -1
- package/src/assets/web-panel/assets/{index-BPwtIqRo.js → index-BCnbC2z7.js} +1 -1
- package/src/assets/web-panel/assets/{index-ByggSxTQ.js → index-BDL2MwxN.js} +1 -1
- package/src/assets/web-panel/assets/{index-BPcjLn2w.js → index-BHUxz4dy.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bu14YcwM.js → index-BL_0ndQc.js} +1 -1
- package/src/assets/web-panel/assets/{index-DrVVi5jX.js → index-BPGlcDvs.js} +1 -1
- package/src/assets/web-panel/assets/{index-DzU_SfdF.js → index-BeycSy7n.js} +1 -1
- package/src/assets/web-panel/assets/{index-DnI__Fwu.js → index-BpiR6uzH.js} +1 -1
- package/src/assets/web-panel/assets/{index-CI-H0ljO.js → index-BwssFWI1.js} +1 -1
- package/src/assets/web-panel/assets/{index-DPHmcQWh.js → index-By9GbJhu.js} +1 -1
- package/src/assets/web-panel/assets/index-C0b78zWZ.js +1 -0
- package/src/assets/web-panel/assets/{index-DX40v3aL.js → index-CEMl-Qte.js} +1 -1
- package/src/assets/web-panel/assets/{index-BRu6Pe98.js → index-CH2wK5dx.js} +1 -1
- package/src/assets/web-panel/assets/{index-8Hxbv1SG.js → index-CRikhGgx.js} +1 -1
- package/src/assets/web-panel/assets/{index-DgGNW2ep.js → index-Ci0zIpSX.js} +1 -1
- package/src/assets/web-panel/assets/{index-BUqE17wu.js → index-Cli0VREv.js} +1 -1
- package/src/assets/web-panel/assets/{index-BAtpuJQ7.js → index-CmEHzOsw.js} +1 -1
- package/src/assets/web-panel/assets/{index-DK47iA2d.js → index-Cwih67e8.js} +1 -1
- package/src/assets/web-panel/assets/{index-mkwJZMBT.js → index-D8jcp9Rj.js} +1 -1
- package/src/assets/web-panel/assets/{index-DSDM-VNz.js → index-DAK28GY8.js} +1 -1
- package/src/assets/web-panel/assets/{index-CNPCAYHk.js → index-DI90Wo_P.js} +1 -1
- package/src/assets/web-panel/assets/{index-CLchRTsS.js → index-DO-IKERp.js} +1 -1
- package/src/assets/web-panel/assets/{index-BKFL4DfP.js → index-DaFr7XB1.js} +1 -1
- package/src/assets/web-panel/assets/{index-DduPk1RS.js → index-DbDhKroq.js} +1 -1
- package/src/assets/web-panel/assets/{index-X1l5-ive.js → index-DnJt9DaX.js} +1 -1
- package/src/assets/web-panel/assets/{index-INxX1TMz.js → index-DvvJWwT8.js} +1 -1
- package/src/assets/web-panel/assets/{index-DHnFhMOL.js → index-PJt1Zrx2.js} +1 -1
- package/src/assets/web-panel/assets/{index-DHVNtkrR.js → index-PKwZkQDC.js} +1 -1
- package/src/assets/web-panel/assets/{index-DZU13W4o.js → index-THsr_UUJ.js} +1 -1
- package/src/assets/web-panel/assets/{index-C-CS_-jC.js → index-bwb4cg_D.js} +1 -1
- package/src/assets/web-panel/assets/{index-BSAeSPQe.js → index-rCTtYCGu.js} +1 -1
- package/src/assets/web-panel/assets/{index-BnU8hi3c.js → index-tMF_deZb.js} +1 -1
- package/src/assets/web-panel/assets/{index-DTA_B9gU.js → index-y7cfh9rP.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-CYYQ0SI1.js → initDefaultProps-B6e5CZ5p.js} +1 -1
- package/src/assets/web-panel/assets/{motion--Tyo36te.js → motion-riMM1KfJ.js} +1 -1
- package/src/assets/web-panel/assets/{move-D2BjgQv7.js → move-C1NSDMjc.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-dyIu5RU_.js → mtc-parser-Bibuny9B.js} +1 -1
- package/src/assets/web-panel/assets/{omit-CDEAhC5H.js → omit-Cmf6FoRn.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-DLKDlIQs.js → pickAttrs-BSsYBUCY.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-BveC8fe2.js → placementArrow-gSB7-GAS.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-51urgYrW.js → responsiveObserve-qaqttvKa.js} +1 -1
- package/src/assets/web-panel/assets/{slide-CCHbhZg-.js → slide-RX2gxl3k.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-W4mtUXRP.js → statusUtils-DEJmkhqw.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-D4Drrz2a.js → styleChecker-CIWmJ78O.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-BBCd4kCM.js → useFlexGapSupport-D-UPSQBE.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-4Khxvw5Y.js → useFs-9QFtqADc.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-7c72tleZ.js → usePersonalDataHub-DM6kyift.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-DzZ7Y0LN.js → vnode-C-q6FNSJ.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-C5jhaET3.js → zoom-D4WJY2m8.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/command-help-index.json +1 -1
- package/src/commands/agent.js +19 -2
- package/src/commands/ask.js +13 -8
- package/src/commands/chat.js +8 -5
- package/src/commands/cowork.js +18 -9
- package/src/commands/eval.js +100 -45
- package/src/commands/evolution-deployment.js +58 -0
- package/src/commands/hub.js +13 -7
- package/src/commands/setup.js +31 -1
- package/src/constants.js +2 -2
- package/src/data/changelog.json +188 -762
- package/src/gateways/ws/personal-data-hub-protocol.js +12 -5
- package/src/lazy-dispatch.js +42 -6
- package/src/lib/agent-router.js +25 -23
- package/src/lib/chat-intent-service.js +3 -13
- package/src/lib/context-memory-kernel/provider-context.js +19 -3
- package/src/lib/cowork-adapter.js +9 -4
- package/src/lib/doctor-checkup.js +42 -0
- package/src/lib/eval/evidence.js +203 -0
- package/src/lib/eval/runner.js +16 -2
- package/src/lib/eval/trend.js +4 -3
- package/src/lib/evolution/evolution-deployment-config.js +217 -10
- package/src/lib/evolution/evolution-deployment-descriptor-revocations.js +131 -0
- package/src/lib/evolution/evolution-deployment-loader.js +23 -2
- package/src/lib/evolution/evolution-deployment-profile.js +281 -37
- package/src/lib/evolution/evolution-deployment-root-rotation.js +154 -0
- package/src/lib/evolution/evolution-file-identity.js +42 -0
- package/src/lib/evolution/evolution-ledger-file-manifest-head-store.js +242 -0
- package/src/lib/evolution/evolution-ledger-manifest-chain.js +74 -18
- package/src/lib/evolution/evolution-ledger-v2-manifest-backend.js +135 -20
- package/src/lib/evolution/evolution-ledger.js +353 -209
- package/src/lib/evolution/governed-hub-llm.js +18 -12
- package/src/lib/evolution/governed-hub-skill.js +4 -17
- package/src/lib/evolution/governed-model-turn.js +7 -8
- package/src/lib/llm-providers.js +1 -0
- package/src/lib/orchestrator.js +14 -8
- package/src/lib/personal-data-hub-wiring.js +7 -1
- package/src/lib/sub-agent-context.js +5 -1
- package/src/lib/task-model-selector.js +1 -1
- package/src/repl/agent-repl.js +1 -1
- package/src/repl/chat-repl.js +8 -4
- package/src/runtime/agent-core.js +36 -10
- package/src/runtime/headless-runner.js +16 -0
- package/src/assets/web-panel/assets/ChatBubbleRenderer-DWXPJh-J.js +0 -1
- package/src/assets/web-panel/assets/EvolutionSettings-C7_tq643.js +0 -1
- package/src/assets/web-panel/assets/MobileProjects-Bd78jDwm.js +0 -1
- package/src/assets/web-panel/assets/OrderTableRenderer-Bu8C6Qlj.js +0 -1
- package/src/assets/web-panel/assets/devWarning-IfrMTwCK.js +0 -1
- package/src/assets/web-panel/assets/index-C7nsIbMa.js +0 -1
- package/src/assets/web-panel/assets/index-DFXFLdKN.js +0 -1
|
@@ -1,8 +1,13 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
1
2
|
import { prepareGovernedModelTurn } from "./governed-model-turn.js";
|
|
2
3
|
|
|
4
|
+
const { createAuthenticatedEvolutionModelClient } = createRequire(
|
|
5
|
+
import.meta.url,
|
|
6
|
+
)("@chainlesschain/personal-data-hub/model-egress-guard");
|
|
7
|
+
|
|
3
8
|
// A scoped wrapper preserves the Hub's independent local/cloud consent check.
|
|
4
9
|
// Never replace llm on the process-wide cached Hub or its analysis engine.
|
|
5
|
-
export function createGovernedHubLlm(llm, factory) {
|
|
10
|
+
export function createGovernedHubLlm(llm, factory, options = {}) {
|
|
6
11
|
if (
|
|
7
12
|
!llm ||
|
|
8
13
|
typeof llm.chat !== "function" ||
|
|
@@ -14,6 +19,8 @@ export function createGovernedHubLlm(llm, factory) {
|
|
|
14
19
|
}
|
|
15
20
|
if (typeof factory !== "function")
|
|
16
21
|
throw new TypeError("A Hub evolution factory is required");
|
|
22
|
+
if (options.onFailure != null && typeof options.onFailure !== "function")
|
|
23
|
+
throw new TypeError("onFailure must be a function");
|
|
17
24
|
const identity = { name: llm.name, isLocal: llm.isLocal, chat: llm.chat };
|
|
18
25
|
const assertIdentity = () => {
|
|
19
26
|
if (
|
|
@@ -27,30 +34,29 @@ export function createGovernedHubLlm(llm, factory) {
|
|
|
27
34
|
}
|
|
28
35
|
};
|
|
29
36
|
const chat = identity.chat.bind(llm);
|
|
30
|
-
return
|
|
31
|
-
|
|
37
|
+
return createAuthenticatedEvolutionModelClient({
|
|
38
|
+
getName() {
|
|
32
39
|
assertIdentity();
|
|
33
40
|
return identity.name;
|
|
34
41
|
},
|
|
35
|
-
|
|
42
|
+
getIsLocal() {
|
|
36
43
|
assertIdentity();
|
|
37
44
|
return identity.isLocal;
|
|
38
45
|
},
|
|
39
|
-
async
|
|
46
|
+
async prepare(messages, chatOptions = {}) {
|
|
40
47
|
assertIdentity();
|
|
41
|
-
|
|
48
|
+
return await prepareGovernedModelTurn(factory, {
|
|
42
49
|
mode: "hub-analysis",
|
|
43
50
|
messages,
|
|
44
|
-
signal:
|
|
51
|
+
signal: chatOptions.signal,
|
|
45
52
|
});
|
|
53
|
+
},
|
|
54
|
+
async transport(messages, chatOptions = {}) {
|
|
46
55
|
assertIdentity();
|
|
47
|
-
const response = await chat(
|
|
56
|
+
const response = await chat(messages, chatOptions);
|
|
48
57
|
assertIdentity();
|
|
49
|
-
if (!response || typeof response.text !== "string") {
|
|
50
|
-
throw new Error("Hub model response must contain text");
|
|
51
|
-
}
|
|
52
|
-
await turn.complete(response.text);
|
|
53
58
|
return response;
|
|
54
59
|
},
|
|
60
|
+
onFailure: options.onFailure,
|
|
55
61
|
});
|
|
56
62
|
}
|
|
@@ -9,25 +9,12 @@ export async function runGovernedHubSkill(
|
|
|
9
9
|
name,
|
|
10
10
|
options,
|
|
11
11
|
) {
|
|
12
|
-
const model = createGovernedHubLlm(hub.llm, factory);
|
|
13
12
|
let failure;
|
|
14
13
|
let failed = false;
|
|
15
|
-
const llm =
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
get isLocal() {
|
|
20
|
-
return model.isLocal;
|
|
21
|
-
},
|
|
22
|
-
async chat(messages, chatOptions) {
|
|
23
|
-
if (failed) throw failure;
|
|
24
|
-
try {
|
|
25
|
-
return await model.chat(messages, chatOptions);
|
|
26
|
-
} catch (error) {
|
|
27
|
-
failure = error;
|
|
28
|
-
failed = true;
|
|
29
|
-
throw error;
|
|
30
|
-
}
|
|
14
|
+
const llm = createGovernedHubLlm(hub.llm, factory, {
|
|
15
|
+
onFailure(error) {
|
|
16
|
+
failure = error;
|
|
17
|
+
failed = true;
|
|
31
18
|
},
|
|
32
19
|
});
|
|
33
20
|
const result = await runSkill({ vault: hub.vault, llm }, name, options);
|
|
@@ -34,14 +34,13 @@ export async function prepareGovernedModelTurn(
|
|
|
34
34
|
{ mode, messages, signal },
|
|
35
35
|
) {
|
|
36
36
|
signal?.throwIfAborted();
|
|
37
|
-
if (factory === null)
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
};
|
|
37
|
+
if (factory === null) {
|
|
38
|
+
const error = new Error(
|
|
39
|
+
"Model egress requires an authenticated evolution composition factory",
|
|
40
|
+
);
|
|
41
|
+
error.code = "CC_AGENT_EVOLUTION_INGRESS_FAILED";
|
|
42
|
+
throw error;
|
|
43
|
+
}
|
|
45
44
|
if (typeof factory !== "function")
|
|
46
45
|
throw new TypeError("Invalid evolution composition factory");
|
|
47
46
|
const runId = `${mode}-${randomUUID()}`;
|
package/src/lib/llm-providers.js
CHANGED
|
@@ -84,6 +84,7 @@ export const BUILT_IN_PROVIDERS = {
|
|
|
84
84
|
baseUrl: "https://ark.cn-beijing.volces.com/api/v3",
|
|
85
85
|
apiKeyEnv: "VOLCENGINE_API_KEY",
|
|
86
86
|
models: [
|
|
87
|
+
"deepseek-v4-flash-ga-260731",
|
|
87
88
|
"deepseek-v4-flash-260425",
|
|
88
89
|
"doubao-seed-2-1-pro-260628",
|
|
89
90
|
"doubao-seed-2-0-lite-260215",
|
package/src/lib/orchestrator.js
CHANGED
|
@@ -153,7 +153,9 @@ export class Orchestrator extends EventEmitter {
|
|
|
153
153
|
this.notifier =
|
|
154
154
|
options.notifier || NotificationManager.fromEnv(options.notify || {});
|
|
155
155
|
|
|
156
|
-
|
|
156
|
+
// The task-scoped evolution composition is created in addTask(), so no
|
|
157
|
+
// provider adapter may be constructed here before its ingress exists.
|
|
158
|
+
this._chat = null;
|
|
157
159
|
this._cronTimer = null;
|
|
158
160
|
|
|
159
161
|
// Forward router events
|
|
@@ -374,13 +376,17 @@ export class Orchestrator extends EventEmitter {
|
|
|
374
376
|
(task.context ? `\nAdditional context:\n${task.context}` : "");
|
|
375
377
|
|
|
376
378
|
try {
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
379
|
+
if (evolutionIngress === null) {
|
|
380
|
+
const error = new Error(
|
|
381
|
+
"Orchestrator model egress requires an authenticated evolution ingress",
|
|
382
|
+
);
|
|
383
|
+
error.code = "CC_AGENT_EVOLUTION_INGRESS_FAILED";
|
|
384
|
+
throw error;
|
|
385
|
+
}
|
|
386
|
+
const chat = createChatFn({
|
|
387
|
+
...this._llmOptions,
|
|
388
|
+
evolutionIngress,
|
|
389
|
+
});
|
|
384
390
|
const raw = await chat(
|
|
385
391
|
[
|
|
386
392
|
{ role: "system", content: systemPrompt },
|
|
@@ -1074,7 +1074,13 @@ async function initHub() {
|
|
|
1074
1074
|
entityResolver,
|
|
1075
1075
|
aichatAccountsStore,
|
|
1076
1076
|
async drainResolver(options = {}, factory = null) {
|
|
1077
|
-
if (factory
|
|
1077
|
+
if (typeof factory !== "function") {
|
|
1078
|
+
const error = new Error(
|
|
1079
|
+
"Personal Data Hub resolver egress requires an authenticated evolution composition factory",
|
|
1080
|
+
);
|
|
1081
|
+
error.code = "CC_AGENT_EVOLUTION_INGRESS_FAILED";
|
|
1082
|
+
throw error;
|
|
1083
|
+
}
|
|
1078
1084
|
const { createGovernedHubResolver } =
|
|
1079
1085
|
await import("./evolution/governed-hub-resolver.js");
|
|
1080
1086
|
const scoped = createGovernedHubResolver(
|
|
@@ -10,7 +10,11 @@
|
|
|
10
10
|
|
|
11
11
|
import crypto from "crypto";
|
|
12
12
|
import { CLIContextEngineering } from "./cli-context-engineering.js";
|
|
13
|
-
import {
|
|
13
|
+
import {
|
|
14
|
+
agentLoop,
|
|
15
|
+
buildSystemPrompt,
|
|
16
|
+
AGENT_TOOLS,
|
|
17
|
+
} from "../runtime/agent-core.js";
|
|
14
18
|
import { feature } from "./feature-flags.js";
|
|
15
19
|
import { isEvolutionIngressFailure } from "./model-failure-policy.js";
|
|
16
20
|
import { captureAgentEvolutionIngress } from "./evolution/agent-evolution-ingress.js";
|
|
@@ -24,7 +24,7 @@ export const TaskType = {
|
|
|
24
24
|
*/
|
|
25
25
|
const TASK_MODEL_MAP = {
|
|
26
26
|
[TaskType.CHAT]: {
|
|
27
|
-
volcengine: "deepseek-v4-flash-
|
|
27
|
+
volcengine: "deepseek-v4-flash-ga-260731",
|
|
28
28
|
openai: "gpt-4o-mini",
|
|
29
29
|
anthropic: "claude-sonnet-4-6",
|
|
30
30
|
deepseek: "deepseek-chat",
|
package/src/repl/agent-repl.js
CHANGED
|
@@ -2954,7 +2954,7 @@ export async function startAgentRepl(options = {}) {
|
|
|
2954
2954
|
const sessionBudgetRootScope = { root: null };
|
|
2955
2955
|
const runtimeOptions = {
|
|
2956
2956
|
...options,
|
|
2957
|
-
|
|
2957
|
+
evolutionIngress,
|
|
2958
2958
|
...(structuredMemoryControlPlane === null
|
|
2959
2959
|
? {}
|
|
2960
2960
|
: {
|
package/src/repl/chat-repl.js
CHANGED
|
@@ -100,13 +100,17 @@ export async function startChatRepl(options = {}) {
|
|
|
100
100
|
options.evolutionIngress == null
|
|
101
101
|
? null
|
|
102
102
|
: captureAgentEvolutionIngress(options.evolutionIngress);
|
|
103
|
+
if (evolutionIngress === null) {
|
|
104
|
+
const error = new Error(
|
|
105
|
+
"Chat REPL model egress requires an authenticated evolution ingress",
|
|
106
|
+
);
|
|
107
|
+
error.code = "CC_AGENT_EVOLUTION_INGRESS_FAILED";
|
|
108
|
+
throw error;
|
|
109
|
+
}
|
|
103
110
|
const admittedSessionId = options.sessionId
|
|
104
111
|
? assertChatSessionUsageAdmission(options.sessionId)
|
|
105
112
|
: null;
|
|
106
|
-
const evolutionSession =
|
|
107
|
-
evolutionIngress === null
|
|
108
|
-
? null
|
|
109
|
-
: createAgentEvolutionSessionLifecycle(evolutionIngress);
|
|
113
|
+
const evolutionSession = createAgentEvolutionSessionLifecycle(evolutionIngress);
|
|
110
114
|
let model = options.model || "qwen2:7b";
|
|
111
115
|
let provider = options.provider || "ollama";
|
|
112
116
|
const baseUrl = options.baseUrl || "http://localhost:11434";
|
|
@@ -3620,6 +3620,10 @@ export async function executeTool(name, args, context = {}) {
|
|
|
3620
3620
|
// never actually reached executeToolInner (sub-agents silently fell
|
|
3621
3621
|
// back to config defaults and their usage was mis-attributed).
|
|
3622
3622
|
llmOptions: context.llmOptions || null,
|
|
3623
|
+
// A spawned child is part of the same governed model run. Preserve the
|
|
3624
|
+
// already-captured ingress through the tool dispatcher so the child
|
|
3625
|
+
// cannot fall through to an unauthenticated provider boundary.
|
|
3626
|
+
evolutionIngress: context.evolutionIngress ?? null,
|
|
3623
3627
|
// 用量归因: shared per-run sink for child-loop (sub-agent / isolated
|
|
3624
3628
|
// skill) token usage, drained by agentLoop as attributed events.
|
|
3625
3629
|
subAgentUsageSink: context.subAgentUsageSink || null,
|
|
@@ -5181,6 +5185,7 @@ async function executeToolInner(
|
|
|
5181
5185
|
permanentMemory = null,
|
|
5182
5186
|
subAgentContract = null,
|
|
5183
5187
|
llmOptions,
|
|
5188
|
+
evolutionIngress = null,
|
|
5184
5189
|
shellPolicyOverrides,
|
|
5185
5190
|
classifyAllShell = false,
|
|
5186
5191
|
approvalGate,
|
|
@@ -7029,6 +7034,7 @@ async function executeToolInner(
|
|
|
7029
7034
|
interaction,
|
|
7030
7035
|
sessionId,
|
|
7031
7036
|
llmOptions,
|
|
7037
|
+
evolutionIngress,
|
|
7032
7038
|
workflowEffectId,
|
|
7033
7039
|
workflowChildEffectId,
|
|
7034
7040
|
workflowChildSequence,
|
|
@@ -10206,6 +10212,9 @@ async function _executeSpawnSubAgent(args, ctx) {
|
|
|
10206
10212
|
const parentLlm = ctx.llmOptions || {};
|
|
10207
10213
|
const subLlmOptions = {
|
|
10208
10214
|
...parentLlm,
|
|
10215
|
+
...(ctx.evolutionIngress != null
|
|
10216
|
+
? { evolutionIngress: ctx.evolutionIngress }
|
|
10217
|
+
: {}),
|
|
10209
10218
|
model: mdModel || parentLlm.model || undefined,
|
|
10210
10219
|
// Preserve the host's optional event channel across every nesting level.
|
|
10211
10220
|
// It is observational only: child hooks/tools must never depend on a
|
|
@@ -10934,6 +10943,13 @@ export async function chatWithTools(rawMessages, options) {
|
|
|
10934
10943
|
options.evolutionIngress == null
|
|
10935
10944
|
? null
|
|
10936
10945
|
: captureAgentEvolutionIngress(options.evolutionIngress);
|
|
10946
|
+
if (evolutionIngress === null) {
|
|
10947
|
+
const error = new Error(
|
|
10948
|
+
"Agent model egress requires an authenticated evolution ingress",
|
|
10949
|
+
);
|
|
10950
|
+
error.code = "CC_AGENT_EVOLUTION_INGRESS_FAILED";
|
|
10951
|
+
throw error;
|
|
10952
|
+
}
|
|
10937
10953
|
const {
|
|
10938
10954
|
provider,
|
|
10939
10955
|
model,
|
|
@@ -10982,14 +10998,12 @@ export async function chatWithTools(rawMessages, options) {
|
|
|
10982
10998
|
})
|
|
10983
10999
|
: providerMessages;
|
|
10984
11000
|
|
|
10985
|
-
|
|
10986
|
-
|
|
10987
|
-
|
|
10988
|
-
|
|
10989
|
-
|
|
10990
|
-
|
|
10991
|
-
tools = projected.tools;
|
|
10992
|
-
}
|
|
11001
|
+
const projected = await evolutionIngress.prepareModelRequest({
|
|
11002
|
+
messages,
|
|
11003
|
+
tools,
|
|
11004
|
+
});
|
|
11005
|
+
messages = projected.messages;
|
|
11006
|
+
tools = projected.tools;
|
|
10993
11007
|
|
|
10994
11008
|
throwIfAborted(signal);
|
|
10995
11009
|
|
|
@@ -11285,7 +11299,7 @@ export async function chatWithTools(rawMessages, options) {
|
|
|
11285
11299
|
dashscope: "qwen-turbo",
|
|
11286
11300
|
mistral: "mistral-large-latest",
|
|
11287
11301
|
gemini: "gemini-2.0-flash",
|
|
11288
|
-
volcengine: "deepseek-v4-flash-
|
|
11302
|
+
volcengine: "deepseek-v4-flash-ga-260731",
|
|
11289
11303
|
};
|
|
11290
11304
|
|
|
11291
11305
|
// Real token streaming (--include-partial-messages) for every OpenAI-compatible
|
|
@@ -13109,8 +13123,12 @@ async function _getAutoCompactor(options) {
|
|
|
13109
13123
|
options.evolutionIngress == null
|
|
13110
13124
|
? null
|
|
13111
13125
|
: captureAgentEvolutionIngress(options.evolutionIngress);
|
|
13126
|
+
// The only ingress with this marker is the frozen Vitest sentinel admitted
|
|
13127
|
+
// by the test capture seam. Production ingress instances remain branded and
|
|
13128
|
+
// therefore always require the owned canonical compactor below.
|
|
13112
13129
|
if (
|
|
13113
13130
|
evolutionIngress !== null &&
|
|
13131
|
+
evolutionIngress.testOnlyUnownedCompaction !== true &&
|
|
13114
13132
|
(typeof options.compactionLlmQuery === "function" ||
|
|
13115
13133
|
(options._autoCompactor != null &&
|
|
13116
13134
|
evolutionAutoCompactors.get(options._autoCompactor) !==
|
|
@@ -13516,8 +13534,15 @@ export async function* agentLoop(messages, options) {
|
|
|
13516
13534
|
options.evolutionIngress == null
|
|
13517
13535
|
? null
|
|
13518
13536
|
: captureAgentEvolutionIngress(options.evolutionIngress);
|
|
13537
|
+
if (evolutionIngress === null) {
|
|
13538
|
+
const error = new Error(
|
|
13539
|
+
"Agent loop requires an authenticated evolution ingress",
|
|
13540
|
+
);
|
|
13541
|
+
error.code = "CC_AGENT_EVOLUTION_INGRESS_FAILED";
|
|
13542
|
+
throw error;
|
|
13543
|
+
}
|
|
13519
13544
|
let llmCall = configuredChatFn || chatWithTools;
|
|
13520
|
-
if (
|
|
13545
|
+
if (configuredChatFn) {
|
|
13521
13546
|
const { captureCanonicalFallbackChatFn } =
|
|
13522
13547
|
await import("./fallback-model.js");
|
|
13523
13548
|
llmCall = captureCanonicalFallbackChatFn(
|
|
@@ -13667,6 +13692,7 @@ export async function* agentLoop(messages, options) {
|
|
|
13667
13692
|
options.contextEngine?.permanentMemory ?? options.permanentMemory ?? null,
|
|
13668
13693
|
// Parent LLM config — forwarded to spawn_sub_agent so a delegated subagent
|
|
13669
13694
|
// inherits the provider/key and can override just the model (cc agents `model:`).
|
|
13695
|
+
evolutionIngress,
|
|
13670
13696
|
llmOptions: {
|
|
13671
13697
|
...(evolutionIngress === null ? {} : { evolutionIngress }),
|
|
13672
13698
|
provider: options.provider || null,
|
|
@@ -233,6 +233,22 @@ export function normalizePermissionMode(mode = "default") {
|
|
|
233
233
|
return m;
|
|
234
234
|
}
|
|
235
235
|
|
|
236
|
+
/**
|
|
237
|
+
* Validate command-line-only headless options before acquiring model egress.
|
|
238
|
+
* This deliberately has no side effects: malformed invocations must report
|
|
239
|
+
* their own input error even when an authenticated evolution deployment is
|
|
240
|
+
* unavailable.
|
|
241
|
+
*/
|
|
242
|
+
export function validateHeadlessInvocationOptions(options = {}) {
|
|
243
|
+
const outputFormat = options.outputFormat || "text";
|
|
244
|
+
if (!VALID_OUTPUT_FORMATS.includes(outputFormat)) {
|
|
245
|
+
throw new Error(
|
|
246
|
+
`Invalid --output-format "${outputFormat}". Expected one of: ${VALID_OUTPUT_FORMATS.join(", ")}`,
|
|
247
|
+
);
|
|
248
|
+
}
|
|
249
|
+
normalizePermissionMode(options.permissionMode);
|
|
250
|
+
}
|
|
251
|
+
|
|
236
252
|
/**
|
|
237
253
|
* Resolve a --permission-mode string into the session-policy tier + a
|
|
238
254
|
* non-interactive confirmer + whether to clamp tools to the read-only set.
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as v,P as m,J as y,U as n,R as a,S,K as C,Q as x,V as w,_ as B,b as s}from"./vendor-Bn1JzzAn.js";import{_ as k}from"./index-Bq2s5obn.js";import"./icons-DG5UD-6K.js";const N={__name:"ChatBubbleRenderer",props:{event:{type:Object,required:!0}},setup(c,{expose:d}){d();const t=c,r=s(()=>{const e=t.event.content||{};return e.text||e.body||e.message||e.title||JSON.stringify(e).slice(0,200)}),i=s(()=>{const e=t.event.content||{};return e.from||e.sender||e.senderName||t.event.actor||"(unknown)"}),l=s(()=>{const e=(t.event.actor||"").toLowerCase();return e.includes("self")||e==="me"||e.endsWith("_self")}),o=s(()=>{const e=t.event.source.adapter||"";return e.startsWith("messaging-qq")?"magenta":e==="wechat"?"green":"blue"}),u=s(()=>{if(!t.event.occurredAt)return"";try{const e=new Date(t.event.occurredAt),p=e.getFullYear(),f=String(e.getMonth()+1).padStart(2,"0"),g=String(e.getDate()).padStart(2,"0"),b=String(e.getHours()).padStart(2,"0"),h=String(e.getMinutes()).padStart(2,"0");return`${p}-${f}-${g} ${b}:${h}`}catch{return""}}),_={props:t,messageText:r,actorLabel:i,isMine:l,adapterColor:o,formattedTime:u,computed:s};return Object.defineProperty(_,"__isScriptSetup",{enumerable:!1,value:!0}),_}},T={class:"bubble"},D={class:"meta"},M={class:"actor"},R={class:"time"},V={class:"body"};function q(c,d,t,r,i,l){const o=v("a-tag");return m(),y("div",{class:B(["chat-row",{mine:r.isMine}])},[n("div",T,[n("div",D,[n("span",M,a(r.actorLabel),1),n("span",R,a(r.formattedTime),1)]),n("div",V,a(r.messageText),1),t.event.source.adapter?(m(),S(o,{key:0,class:"src",color:r.adapterColor},{default:C(()=>[x(a(t.event.source.adapter),1)]),_:1},8,["color"])):w("v-if",!0)])],2)}const A=k(N,[["render",q],["__scopeId","data-v-49238629"],["__file","/tmp/cc-web-panel-GmyrsD/repo/packages/web-panel/src/components/pdh/renderers/ChatBubbleRenderer.vue"]]);export{A as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as l,J as V,U as p,c as a,K as t,o as x,r as m,a as R,b as O,P as C,Q as d,R as g,S as B,V as I}from"./vendor-Bn1JzzAn.js";import{_ as L,u as D,d as u}from"./index-Bq2s5obn.js";import{R as j}from"./icons-DG5UD-6K.js";const H={__name:"EvolutionSettings",setup(N,{expose:o}){o();const E=D(),e=m(!1),v=m(!1),b=m(!1),i=m(""),c=m(""),n=R({source:"none",effectiveEnabled:!1,profileEnabled:!1,verified:!1,commands:[]}),P=O(()=>e.value||v.value||b.value);function _(s){Object.assign(n,s||{}),i.value=n.descriptorPath||"",c.value=n.trustRootPath||""}async function f(s,k=3e4){return await E.waitConnected(8e3),(await E.sendRaw(s,k)).result}async function y(){e.value=!0;try{_(await f({type:"evolution.deployment.status"}))}catch(s){u.error("读取配置失败:"+s.message)}finally{e.value=!1}}async function S(){if(!i.value.trim()||!c.value.trim()){u.warning("请填写描述符和信任根公钥的绝对路径");return}v.value=!0;try{_(await f({type:"evolution.deployment.configure",descriptorPath:i.value.trim(),trustRootPath:c.value.trim()},6e4)),u.success("签名校验通过,配置已保存并启用;自动发布仍为 HOLD")}catch(s){u.error("配置失败:"+s.message)}finally{v.value=!1}}async function w(){b.value=!0;try{_(await f({type:"evolution.deployment.set-enabled",enabled:!n.profileEnabled})),u.success(n.profileEnabled?"已启用":"已停用")}catch(s){u.error("更新失败:"+s.message)}finally{b.value=!1}}x(y);const r={ws:E,loading:e,saving:v,toggling:b,descriptorPath:i,trustRootPath:c,status:n,busy:P,apply:_,request:f,loadStatus:y,save:S,toggle:w,computed:O,onMounted:x,reactive:R,ref:m,get ReloadOutlined(){return j},get message(){return u},get useWsStore(){return D}};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}},U={class:"page-head"},W={class:"mono"},J={class:"mono"};function q(N,o,E,e,v,b){const i=l("a-button"),c=l("a-alert"),n=l("a-input"),P=l("a-form-item"),_=l("a-space"),f=l("a-form"),y=l("a-card"),S=l("a-col"),w=l("a-tag"),r=l("a-descriptions-item"),s=l("a-descriptions"),k=l("a-row");return C(),V("div",null,[p("div",U,[o[3]||(o[3]=p("div",null,[p("h2",{class:"page-title"},"Skill 自进化配置"),p("p",{class:"page-sub"},"统一配置受治理部署;CLI、IDE 插件与 cc ui 共享。")],-1)),a(i,{loading:e.loading,onClick:e.loadStatus},{icon:t(()=>[a(e.ReloadOutlined)]),default:t(()=>[o[2]||(o[2]=d("刷新 ",-1))]),_:1},8,["loading"])]),a(c,{message:"不会开启自动发布",description:"此开关只启用经过签名的 Skill 自进化运行时。候选项进入 active 前仍需人工审核,自动发布始终保持 HOLD。",type:"warning","show-icon":"",class:"notice"}),a(k,{gutter:16},{default:t(()=>[a(S,{xs:24,xl:15},{default:t(()=>[a(y,{title:"签名部署",class:"panel-card"},{default:t(()=>[a(f,{layout:"vertical"},{default:t(()=>[a(P,{label:"签名部署描述符"},{extra:t(()=>[...o[4]||(o[4]=[d("Web 页面不能读取本机文件选择器,请填写运行 cc ui 的机器上的绝对路径。",-1)])]),default:t(()=>[a(n,{value:e.descriptorPath,"onUpdate:value":o[0]||(o[0]=h=>e.descriptorPath=h),disabled:e.busy,placeholder:"deployment descriptor JSON 的服务器绝对路径"},null,8,["value","disabled"])]),_:1}),a(P,{label:"Ed25519 信任根公钥"},{default:t(()=>[a(n,{value:e.trustRootPath,"onUpdate:value":o[1]||(o[1]=h=>e.trustRootPath=h),disabled:e.busy,placeholder:"信任根 public key 的服务器绝对路径"},null,8,["value","disabled"])]),_:1}),a(_,null,{default:t(()=>[a(i,{type:"primary",loading:e.saving,onClick:e.save},{default:t(()=>[...o[5]||(o[5]=[d("校验、保存并启用",-1)])]),_:1},8,["loading"]),a(i,{danger:e.status.profileEnabled,disabled:!e.status.descriptorPath,loading:e.toggling,onClick:e.toggle},{default:t(()=>[d(g(e.status.profileEnabled?"停用":"启用"),1)]),_:1},8,["danger","disabled","loading"])]),_:1})]),_:1})]),_:1})]),_:1}),a(S,{xs:24,xl:9},{default:t(()=>[a(y,{title:"治理状态",class:"panel-card status-card"},{default:t(()=>[a(s,{column:1,size:"small"},{default:t(()=>[a(r,{label:"生效状态"},{default:t(()=>[a(w,{color:e.status.effectiveEnabled?"green":"default"},{default:t(()=>[d(g(e.status.effectiveEnabled?"已启用":"未启用"),1)]),_:1},8,["color"])]),_:1}),a(r,{label:"生效来源"},{default:t(()=>[d(g(e.status.source||"none"),1)]),_:1}),a(r,{label:"签名校验"},{default:t(()=>[a(w,{color:e.status.verified?"green":"red"},{default:t(()=>[d(g(e.status.verified?"已通过":"未通过"),1)]),_:1},8,["color"])]),_:1}),a(r,{label:"自动发布"},{default:t(()=>[a(w,{color:"orange"},{default:t(()=>[...o[6]||(o[6]=[d("HOLD",-1)])]),_:1})]),_:1}),a(r,{label:"配置文件"},{default:t(()=>[p("span",W,g(e.status.profilePath||"—"),1)]),_:1}),a(r,{label:"允许命令"},{default:t(()=>[p("span",J,g((e.status.commands||[]).join(", ")||"—"),1)]),_:1})]),_:1}),e.status.error?(C(),B(c,{key:0,message:e.status.error,type:"error","show-icon":"",class:"error"},null,8,["message"])):I("v-if",!0)]),_:1})]),_:1})]),_:1})])}const M=L(H,[["render",q],["__scopeId","data-v-5a42105e"],["__file","/tmp/cc-web-panel-GmyrsD/repo/packages/web-panel/src/views/EvolutionSettings.vue"]]);export{M as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as n,J as g,c as l,K as r,N as u,P as h,U as o,R as t,Q as m}from"./vendor-Bn1JzzAn.js";import{_ as v,b}from"./index-Bq2s5obn.js";import{a8 as y,M}from"./icons-DG5UD-6K.js";const B={__name:"MobileProjects",setup(p,{expose:i}){i();const c=u(),{t:e}=b();function a(){c.push("/projects")}function _(){c.push("/mobile-bridge")}const s={router:c,t:e,goToProjects:a,goToMobileBridge:_,get useRouter(){return u},get useI18n(){return b},get MobileOutlined(){return M},get FolderOutlined(){return y}};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}},x={class:"mobile-projects-placeholder"},O={class:"title"},k={class:"subtitle"},w={class:"explainer"};function D(p,i,c,e,a,_){const s=n("a-alert"),d=n("a-button"),f=n("a-space"),P=n("a-empty"),j=n("a-card");return h(),g("div",x,[l(j,null,{default:r(()=>[l(P,{description:!1},{image:r(()=>[l(e.MobileOutlined,{style:{fontSize:"64px",color:"#bfbfbf"}})]),default:r(()=>[o("h2",O,t(e.t("mobileProjects.title")),1),o("p",k,t(e.t("mobileProjects.subtitle")),1),l(s,{message:e.t("mobileProjects.v02Banner"),type:"info","show-icon":"",class:"banner"},null,8,["message"]),o("div",w,[o("h3",null,t(e.t("mobileProjects.currentDirection")),1),o("p",null,t(e.t("mobileProjects.currentDirectionBody")),1),o("ul",null,[o("li",null,t(e.t("mobileProjects.stepPhone")),1),o("li",null,t(e.t("mobileProjects.stepTap")),1),o("li",null,t(e.t("mobileProjects.stepPull")),1)]),o("h3",null,t(e.t("mobileProjects.reverseDirection")),1),o("p",null,t(e.t("mobileProjects.reverseDirectionBody")),1)]),l(f,{class:"actions"},{default:r(()=>[l(d,{type:"primary",onClick:e.goToProjects},{default:r(()=>[l(e.FolderOutlined),m(" "+t(e.t("mobileProjects.viewLocalProjects")),1)]),_:1}),l(d,{onClick:e.goToMobileBridge},{default:r(()=>[l(e.MobileOutlined),m(" "+t(e.t("mobileProjects.checkBridge")),1)]),_:1})]),_:1})]),_:1})]),_:1})])}const N=v(B,[["render",D],["__scopeId","data-v-9262cc45"],["__file","/tmp/cc-web-panel-GmyrsD/repo/packages/web-panel/src/views/MobileProjects.vue"]]);export{N 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 y,b as a}from"./vendor-Bn1JzzAn.js";import{_ as S}from"./index-Bq2s5obn.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||{}),d=a(()=>o.event.extra||{}),m=a(()=>d.value.merchant||e.value.merchant||e.value.counterparty||"—"),c=a(()=>e.value.title||e.value.name||e.value.itemName||e.value.text||"—"),g=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(()=>d.value.orderNo||e.value.orderNo||e.value.orderId),f=a(()=>e.value.status||e.value.state),b=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"}),h=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:d,merchantText:m,itemText:c,amountText:g,orderNo:T,statusText:f,statusColor:b,formattedTime:h,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"},D={class:"val"},R={class:"row"},B={class:"val"},I={class:"row amount-row"},j={class:"val amount"},A={key:0,class:"row"},F={class:"val mono"},M={key:1,class:"row"};function P(p,r,o,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(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",D,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",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)])):y("v-if",!0),e.statusText?(l(),u("div",M,[r[4]||(r[4]=s("span",{class:"key"},"状态",-1)),i(c,{color:e.statusColor},{default:v(()=>[_(n(e.statusText),1)]),_:1},8,["color"])])):y("v-if",!0)])}const J=S(k,[["render",P],["__scopeId","data-v-5ed5524d"],["__file","/tmp/cc-web-panel-GmyrsD/repo/packages/web-panel/src/components/pdh/renderers/OrderTableRenderer.vue"]]);export{J as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Q as r}from"./index-Bq2s5obn.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-DZ5Izi2A.js";import{a0 as t}from"./index-Bq2s5obn.js";import"./vendor-Bn1JzzAn.js";import"./responsiveObserve-51urgYrW.js";import"./useFlexGapSupport-BBCd4kCM.js";import"./styleChecker-D4Drrz2a.js";import"./index-mkwJZMBT.js";import"./icons-DG5UD-6K.js";const l=t(o);export{l as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{C as o}from"./Col-BYFh9rE1.js";import{a0 as t}from"./index-Bq2s5obn.js";import"./vendor-Bn1JzzAn.js";import"./index-mkwJZMBT.js";import"./icons-DG5UD-6K.js";const s=t(o);export{s as default};
|