chainlesschain 0.166.98 → 0.166.99
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 +20 -23
- package/package.json +1 -1
- package/src/assets/linux-subreaper/linux-arm64/manifest.json +1 -1
- package/src/assets/linux-subreaper/linux-x64/manifest.json +1 -1
- package/src/assets/web-panel/assets/{AIOps-DCIQFtF1.js → AIOps-BUgaCgVU.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-BxhHU3nE.js → ActionButton-b0MpUSSZ.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-DdM_307O.js → Analytics-hbXTvHqO.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-C43-kSrh.js → AppLayout-CLQoAVu4.js} +4 -4
- package/src/assets/web-panel/assets/{Artifacts-B2Vp2Am6.js → Artifacts-ytHzl2L2.js} +1 -1
- package/src/assets/web-panel/assets/{Audit-s-lYUfOp.js → Audit-BuhkLm0C.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-DTE7Kzio.js → BackgroundAgents-CS81hxZV.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-9k1q4Mt6.js → Backup-DzR-_Qvi.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-DlpUtK5R.js → BaseInput-r8Ku_lYw.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-CR9S8Rmb.js → Chat-C3Uxtoaa.js} +5 -5
- package/src/assets/web-panel/assets/ChatBubbleRenderer-RvblDu77.js +1 -0
- package/src/assets/web-panel/assets/{Checkbox-DpFRu7Df.js → Checkbox-BnG2P5yc.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-BIl72E4Y.js → Codegen-BdgU6HZy.js} +1 -1
- package/src/assets/web-panel/assets/{Col-91tl_err.js → Col-DT8t9wmf.js} +1 -1
- package/src/assets/web-panel/assets/{Community-CswahO9-.js → Community-ChkxR5oe.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-D9pfHmaM.js → Compact-DIwLeTk3.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-CXSZzAO9.js → Compliance-CAqzGLvW.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-CuT9RWTn.js → Cowork-Bb3jejMG.js} +2 -2
- package/src/assets/web-panel/assets/{Cron-B71aJWDV.js → Cron-BYRkZLta.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-CcUuWyx8.js → Crosschain-BD6z227t.js} +1 -1
- package/src/assets/web-panel/assets/{DID-CtVVGOPL.js → DID-DA3G5Wgo.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-CV7ZCYQq.js → Dashboard-yaZePHOu.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-DKHxwLgE.js → Dropdown-BqY5MBx2.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-Bd03UIvv.js → EmailListRenderer-cIWwOgHm.js} +1 -1
- package/src/assets/web-panel/assets/{EvolutionSettings-CTrG03B_.js → EvolutionSettings-zvV6ymca.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-DXS4bS6Q.js → FamilyGuardDashboard-CAmh1U2b.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-BODG2Szj.js → Federation-5qd2LCg8.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-D32ccUqD.js → FormItemContext-Bdkj1sRJ.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-ClsyrKvF.js → GenericCardRenderer-B-gWN2P3.js} +1 -1
- package/src/assets/web-panel/assets/{Git-DcM2yhbL.js → Git-BEMh_NGd.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-BhUzM87n.js → Governance-qLGvA2Hw.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-Dq1n0Ifg.js → Inference-DblBwYuW.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-dmmPwEks.js → KnowledgeGraph-BISegVD_.js} +1 -1
- package/src/assets/web-panel/assets/Logs-BD2UR7kE.js +2 -0
- package/src/assets/web-panel/assets/MarkdownRenderer-B-TlDCmr.js +1 -0
- package/src/assets/web-panel/assets/{Marketplace-Cfw7XLck.js → Marketplace-CHKXMOkH.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-CNrZRy4n.js → McpTools-B5G1elqd.js} +2 -2
- package/src/assets/web-panel/assets/{Memory-BESjTxdd.js → Memory-O5Ib0uTR.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-Boyjo07i.js → MobileBridge-BaGYL7rT.js} +1 -1
- package/src/assets/web-panel/assets/MobileProjects-Dsctbob8.js +1 -0
- package/src/assets/web-panel/assets/{Mtc-CBkrD0Fq.js → Mtc-CNjJ97jg.js} +2 -2
- package/src/assets/web-panel/assets/{MtcAudit-BA7cAK8h.js → MtcAudit-DjBN-Wqz.js} +2 -2
- package/src/assets/web-panel/assets/{Multisig-m0RGzkKO.js → Multisig-B850R9lO.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-D_TgzifU.js → NLProgramming-Bn8sbFfV.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-Dr-Yr9LL.js → Notes-BpLmMp3Q.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-DGanpkqO.js → NotificationSettings-Dbk97rjb.js} +1 -1
- package/src/assets/web-panel/assets/{OrderTableRenderer-D1FX50QY.js → OrderTableRenderer-BOBX_I72.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-DRbPg-gs.js → Organization-B45DpOuE.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-flEO37z6.js → Overflow-DmKH7eer.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-DqfqFbCW.js → P2P-CC4FaXTl.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-Cmi5a5dW.js → PdhVaultBrowser-C2SgP4PI.js} +3 -3
- package/src/assets/web-panel/assets/{Permissions-DBVRlvBW.js → Permissions-BQB4QFj_.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-gQqjPr9X.js → PersonalDataHub-Dy6GGpn4.js} +4 -4
- package/src/assets/web-panel/assets/{Pipeline-6HlifUc9.js → Pipeline-B9HB5pRc.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-bm_2-Zwg.js → Privacy-D7pOmg-p.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-BJW3isuq.js → ProjectInit-DglBqvec.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-DD3yolz7.js → ProjectSettings-Bho22znM.js} +2 -2
- package/src/assets/web-panel/assets/{Projects-BF3GtWny.js → Projects-C0bSuM8U.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-CQA6WAK7.js → Providers-BgAgo1Yr.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-DOAwp5Xo.js → QrScannerModal-C2fBjCC8.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-qeFXsAZT.js → QuickAsk-C8MiF-rk.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-zDWXwZN8.js → Recommend-D_TzHdQf.js} +1 -1
- package/src/assets/web-panel/assets/{RemoteSession-toe6Ip06.js → RemoteSession-BHO7b6xE.js} +3 -3
- package/src/assets/web-panel/assets/{Reputation-DRDi_Eqp.js → Reputation-BPxNmNhD.js} +1 -1
- package/src/assets/web-panel/assets/{Row-Do2UbYkf.js → Row-fwhot5Bk.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-B57C6_Sa.js → RssFeed-CZbD1B-5.js} +3 -3
- package/src/assets/web-panel/assets/{Search-DfDyBpe9.js → Search-BRs6YpAE.js} +1 -1
- package/src/assets/web-panel/assets/{Security-CulNxeAM.js → Security-CB344tKC.js} +4 -4
- package/src/assets/web-panel/assets/{Services-COfAYvs4.js → Services-Beo-7fEl.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-0fn0T146.js → Skeleton-CDXx96vD.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-pPQgAhvJ.js → Skills-b-mQTJK4.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-CIsRmePR.js → Sla-BvjP-IS9.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-Bn01d-8b.js → SpeechSettings-C6wsV-cO.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-Cx_Znk7L.js → SyncSettings-BQZoko-e.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-DvaskzpG.js → Tasks-6Z0rJJVO.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-DmHCEiDO.js → Templates-Cc9IXtEQ.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-CqHyvnbW.js → Tenant-BLc7AjOI.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-DTt3yqWL.js → Terminal-CUN49v85.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-BhkIxcR3.js → TimelineRenderer-CX-SksHN.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-mhjYcBBP.js → Tokens-Btrm0-rK.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-CdlMQfwX.js → Trigger-CIboUvKe.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-Bzovg_Gw.js → Trust-Rv9jEs5v.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-ph3EuYi7.js → UkeySign-B_xomdD5.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-Bo2B4VZE.js → VideoEditing-CrvWeMow.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-BQTKsSUT.js → Wallet-BjvWgk_7.js} +3 -3
- package/src/assets/web-panel/assets/{WebAuthn-nJxsXNHV.js → WebAuthn-CwfpFw92.js} +5 -5
- package/src/assets/web-panel/assets/{WorkflowEditor-CjH8g2N7.js → WorkflowEditor-Dkk2QsOe.js} +1 -1
- package/src/assets/web-panel/assets/{chat-CkbNmnQD.js → chat-Dah1DVes.js} +1 -1
- package/src/assets/web-panel/assets/{colors-BY9JcObR.js → colors-JEpgQ10k.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-Dzzq-d8n.js → compact-item--DuG_cxf.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-DiJxxdTx.js → createContext-BJ_GZvon.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-B6kQEceX.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-DaXPOw3D.js → hasIn-yZRLDmWK.js} +1 -1
- package/src/assets/web-panel/assets/{index-Djeh6rAb.js → index-1QZASeW1.js} +1 -1
- package/src/assets/web-panel/assets/{index-BvgMt6Io.js → index-9L3Pg2tc.js} +1 -1
- package/src/assets/web-panel/assets/{index-CbOOm8I8.js → index-BKl40wrO.js} +1 -1
- package/src/assets/web-panel/assets/{index-CnLO1_yN.js → index-BM7xJKGD.js} +1 -1
- package/src/assets/web-panel/assets/{index-BGvIb1Sr.js → index-BUjyj7qR.js} +1 -1
- package/src/assets/web-panel/assets/{index-BHeHyLRM.js → index-BWkKE8Oj.js} +3 -3
- package/src/assets/web-panel/assets/{index-DObXhPhH.js → index-Bdg_nWD1.js} +1 -1
- package/src/assets/web-panel/assets/{index-CWLpEg34.js → index-C56b8e9s.js} +1 -1
- package/src/assets/web-panel/assets/{index-BqCHe05H.js → index-C6ohEAEV.js} +1 -1
- package/src/assets/web-panel/assets/{index-CqOkm6kW.js → index-C8nXkCMf.js} +1 -1
- package/src/assets/web-panel/assets/{index-Igq-72Ep.js → index-CFj7ylAJ.js} +1 -1
- package/src/assets/web-panel/assets/{index-i9eu2Kir.js → index-CJLz3SpM.js} +1 -1
- package/src/assets/web-panel/assets/{index-C6XSCXeb.js → index-CQedFuDw.js} +1 -1
- package/src/assets/web-panel/assets/index-CSeiH6HA.js +1 -0
- package/src/assets/web-panel/assets/index-CayGTz6d.js +1 -0
- package/src/assets/web-panel/assets/{index-cu1J4avY.js → index-CjuD8smQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-dC2JACyJ.js → index-Cmr0AzcK.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dl8U-0hn.js → index-CxB49Mow.js} +1 -1
- package/src/assets/web-panel/assets/{index-Jmlk_lDX.js → index-D6Le2m3d.js} +1 -1
- package/src/assets/web-panel/assets/{index-DSqQyS9-.js → index-DFJbJ8rs.js} +1 -1
- package/src/assets/web-panel/assets/{index-EiaWq1TH.js → index-DQ4Fch3e.js} +1 -1
- package/src/assets/web-panel/assets/{index-BlWg1bRA.js → index-DZBesaCN.js} +1 -1
- package/src/assets/web-panel/assets/{index-DWT9-E5b.js → index-DaDLWIWo.js} +1 -1
- package/src/assets/web-panel/assets/{index-DbmHmeP-.js → index-DbMGGcpZ.js} +1 -1
- package/src/assets/web-panel/assets/{index-LRZSVBxC.js → index-DddwZCT9.js} +1 -1
- package/src/assets/web-panel/assets/{index-B4Sf1AMk.js → index-DemMuw7n.js} +1 -1
- package/src/assets/web-panel/assets/{index-6Z6Z4UwN.js → index-DhX48E81.js} +1 -1
- package/src/assets/web-panel/assets/{index-C_OMH_FT.js → index-Dq-8PFhL.js} +1 -1
- package/src/assets/web-panel/assets/{index-CAzfu6k5.js → index-DroaQypF.js} +1 -1
- package/src/assets/web-panel/assets/{index-DaylJfw6.js → index-DxnkldGo.js} +1 -1
- package/src/assets/web-panel/assets/{index-DDnqjZa2.js → index-IjOa5lYn.js} +1 -1
- package/src/assets/web-panel/assets/{index-CVblRqUN.js → index-L9CFyRIi.js} +1 -1
- package/src/assets/web-panel/assets/{index-BycyBM6g.js → index-VIgVth92.js} +1 -1
- package/src/assets/web-panel/assets/{index-7YVCjSqG.js → index-asia_JPc.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bhsxh-rH.js → index-cHx5KzUt.js} +1 -1
- package/src/assets/web-panel/assets/{index-B31oMRmK.js → index-kZE-K3ZO.js} +1 -1
- package/src/assets/web-panel/assets/{index-BQvtlYUd.js → index-o2qO_dYf.js} +1 -1
- package/src/assets/web-panel/assets/{index-Uh9SjtgW.js → index-rkvSOceQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-D_Eoh740.js → index-vdTrEOj7.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-B0WuG3fa.js → initDefaultProps-anKyyjGc.js} +1 -1
- package/src/assets/web-panel/assets/{motion-1r5YB22w.js → motion-Cqp0nx5A.js} +1 -1
- package/src/assets/web-panel/assets/{move-CvtXWA_V.js → move-Ca3mgkM2.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-ChedmEE_.js → mtc-parser-BmwuhJ3z.js} +1 -1
- package/src/assets/web-panel/assets/{omit-DpEA3MP0.js → omit-C9Mf05WJ.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-BWgrUZF6.js → pickAttrs-2PbxB9Ds.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-BWfo_VbI.js → placementArrow-CTVbOFHt.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-CRft03Vk.js → responsiveObserve-Nrm8Vbmr.js} +1 -1
- package/src/assets/web-panel/assets/{slide-l5LeXusH.js → slide-Dh4r1zqR.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-CCEC0JR-.js → statusUtils-vzNoQL-r.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-Bw5Gw_2w.js → styleChecker-BXpGfNkI.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-BAuxWB7K.js → useFlexGapSupport-CVWBRdhs.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-CxUP97Cw.js → useFs-BJWMLffI.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-BJDjT4Sy.js → usePersonalDataHub-CWCe5VHG.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-BcCsFzIs.js → vnode-D-NBEb8m.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-MLmG09h6.js → zoom-C0mnhfGf.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/data/changelog.json +13 -0
- package/src/lib/cost-budget.js +8 -0
- package/src/lib/llm-pricing.js +61 -7
- package/src/lib/model-capabilities.js +10 -2
- package/src/lib/model-catalog-review.js +1 -0
- package/src/lib/model-context-catalog.js +26 -1
- package/src/lib/provider-options.js +38 -1
- package/src/lib/search-command.js +4 -1
- package/src/lib/stream-retry.js +14 -1
- package/src/lib/usage-pricing-context.js +100 -10
- package/src/runtime/agent-core.js +73 -18
- package/src/runtime/headless-runner.js +17 -0
- package/src/runtime/headless-stream.js +17 -0
- package/src/runtime/provider-stream-state.js +7 -0
- package/src/assets/web-panel/assets/ChatBubbleRenderer-Xtgfw3-c.js +0 -1
- package/src/assets/web-panel/assets/Logs-CBSYrPmh.js +0 -2
- package/src/assets/web-panel/assets/MarkdownRenderer-CRoDI77y.js +0 -1
- package/src/assets/web-panel/assets/MobileProjects-BmxmpTWz.js +0 -1
- package/src/assets/web-panel/assets/devWarning-D502_Z3w.js +0 -1
- package/src/assets/web-panel/assets/index-BrQ4nI4W.js +0 -1
- package/src/assets/web-panel/assets/index-C0_sewGO.js +0 -1
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
import fs from "fs";
|
|
18
|
+
import { isUtf8 } from "node:buffer";
|
|
18
19
|
import {
|
|
19
20
|
_isNonNegativeSafeInteger,
|
|
20
21
|
_providerUsageCount,
|
|
@@ -59,6 +60,8 @@ import {
|
|
|
59
60
|
TASK_RECOVERY_TOOLS,
|
|
60
61
|
} from "../lib/task-progress-tracker.js";
|
|
61
62
|
import { TOOL_RECOVERY_PAUSED_CODE } from "../lib/tool-recovery-result.js";
|
|
63
|
+
import { haiku55ThinkingParams } from "../lib/provider-options.js";
|
|
64
|
+
import { projectUsagePricingContext } from "../lib/usage-pricing-context.js";
|
|
62
65
|
import broker from "../lib/process-execution-broker/index.js";
|
|
63
66
|
import os from "os";
|
|
64
67
|
import { createHash, randomUUID } from "node:crypto";
|
|
@@ -2024,6 +2027,20 @@ function applyLiteralEdit(content, oldStr, newStr, replaceAll) {
|
|
|
2024
2027
|
return { count, newContent };
|
|
2025
2028
|
}
|
|
2026
2029
|
|
|
2030
|
+
// Edits derive their output from the entire existing file. A replacement
|
|
2031
|
+
// decoder would silently rewrite unrelated legacy or malformed bytes.
|
|
2032
|
+
function readUtf8ForEdit(filePath) {
|
|
2033
|
+
const bytes = fs.readFileSync(filePath);
|
|
2034
|
+
if (!isUtf8(bytes)) {
|
|
2035
|
+
return {
|
|
2036
|
+
error: "File is not valid UTF-8; text edits require valid UTF-8 bytes.",
|
|
2037
|
+
code: "CC_EDIT_INVALID_UTF8",
|
|
2038
|
+
};
|
|
2039
|
+
}
|
|
2040
|
+
// Buffer decoding preserves a valid UTF-8 BOM and literal U+FFFD characters.
|
|
2041
|
+
return { content: bytes.toString("utf8") };
|
|
2042
|
+
}
|
|
2043
|
+
|
|
2027
2044
|
/**
|
|
2028
2045
|
* Compute the content an edit tool WOULD write, without writing it — the
|
|
2029
2046
|
* left/right sides for an IDE diff review. Mirrors the corresponding
|
|
@@ -2085,7 +2102,9 @@ export function computeProposedEdit(name, args = {}, cwd = process.cwd()) {
|
|
|
2085
2102
|
}
|
|
2086
2103
|
if (name === "edit_file") {
|
|
2087
2104
|
if (!fs.existsSync(filePath)) return null;
|
|
2088
|
-
const
|
|
2105
|
+
const decoded = readUtf8ForEdit(filePath);
|
|
2106
|
+
if (decoded.error) return null;
|
|
2107
|
+
const content = decoded.content;
|
|
2089
2108
|
if (
|
|
2090
2109
|
typeof args.old_string !== "string" ||
|
|
2091
2110
|
args.old_string === "" ||
|
|
@@ -2113,7 +2132,9 @@ export function computeProposedEdit(name, args = {}, cwd = process.cwd()) {
|
|
|
2113
2132
|
if (name === "edit_file_hashed") {
|
|
2114
2133
|
if (!fs.existsSync(filePath)) return null;
|
|
2115
2134
|
if (!args.anchor_hash || typeof args.new_line !== "string") return null;
|
|
2116
|
-
const
|
|
2135
|
+
const decoded = readUtf8ForEdit(filePath);
|
|
2136
|
+
if (decoded.error) return null;
|
|
2137
|
+
const original = decoded.content;
|
|
2117
2138
|
const result = replaceByHash(original, {
|
|
2118
2139
|
anchorHash: args.anchor_hash,
|
|
2119
2140
|
expectedLine: args.expected_line,
|
|
@@ -5835,7 +5856,9 @@ async function executeToolInner(
|
|
|
5835
5856
|
if (!fs.existsSync(filePath)) {
|
|
5836
5857
|
return attachDescriptor({ error: `Notebook not found: ${filePath}` });
|
|
5837
5858
|
}
|
|
5838
|
-
const
|
|
5859
|
+
const decoded = readUtf8ForEdit(filePath);
|
|
5860
|
+
if (decoded.error) return attachDescriptor(decoded);
|
|
5861
|
+
const original = decoded.content;
|
|
5839
5862
|
const res = editNotebookCell(original, args);
|
|
5840
5863
|
if (res.error) return attachDescriptor({ error: res.error });
|
|
5841
5864
|
const wrote = writeFileVerified(filePath, res.text);
|
|
@@ -5871,7 +5894,9 @@ async function executeToolInner(
|
|
|
5871
5894
|
}
|
|
5872
5895
|
const staleEdit = _checkFileFreshness(filePath);
|
|
5873
5896
|
if (staleEdit) return attachDescriptor({ error: staleEdit });
|
|
5874
|
-
const
|
|
5897
|
+
const decoded = readUtf8ForEdit(filePath);
|
|
5898
|
+
if (decoded.error) return attachDescriptor(decoded);
|
|
5899
|
+
const content = decoded.content;
|
|
5875
5900
|
const replaceAll = args.replace_all === true;
|
|
5876
5901
|
const { count, newContent } = applyLiteralEdit(
|
|
5877
5902
|
content,
|
|
@@ -5971,7 +5996,9 @@ async function executeToolInner(
|
|
|
5971
5996
|
}
|
|
5972
5997
|
const staleHashed = _checkFileFreshness(filePath);
|
|
5973
5998
|
if (staleHashed) return attachDescriptor({ error: staleHashed });
|
|
5974
|
-
const
|
|
5999
|
+
const decoded = readUtf8ForEdit(filePath);
|
|
6000
|
+
if (decoded.error) return attachDescriptor(decoded);
|
|
6001
|
+
const original = decoded.content;
|
|
5975
6002
|
const result = replaceByHash(original, {
|
|
5976
6003
|
anchorHash: args.anchor_hash,
|
|
5977
6004
|
expectedLine: args.expected_line,
|
|
@@ -11962,10 +11989,16 @@ export async function chatWithTools(rawMessages, options) {
|
|
|
11962
11989
|
messages: _toAnthropicMessages(otherMsgs),
|
|
11963
11990
|
tools: anthropicTools,
|
|
11964
11991
|
};
|
|
11965
|
-
|
|
11966
|
-
|
|
11967
|
-
|
|
11968
|
-
|
|
11992
|
+
if (
|
|
11993
|
+
effModel.toLowerCase() === "claude-haiku-5-5" &&
|
|
11994
|
+
body.messages.at(-1)?.role === "assistant"
|
|
11995
|
+
) {
|
|
11996
|
+
throw new TypeError("Haiku 5.5 does not support assistant prefill.");
|
|
11997
|
+
}
|
|
11998
|
+
// Legacy models retain opt-in thinking. Exact Haiku 5.5 uses its documented
|
|
11999
|
+
// adaptive/medium default and accepts an explicit disabled setting.
|
|
12000
|
+
// Sampling parameters are never sent. RUNTIME-UNVERIFIED: no Anthropic key
|
|
12001
|
+
// here to E2E the
|
|
11969
12002
|
// thinking-block signature replay (see cli_claude_code_parity_landed memory).
|
|
11970
12003
|
const thinkingParams = _anthropicThinkingParams(
|
|
11971
12004
|
effModel,
|
|
@@ -12046,6 +12079,11 @@ export async function chatWithTools(rawMessages, options) {
|
|
|
12046
12079
|
const data = await response.json();
|
|
12047
12080
|
const normalized = _normalizeAnthropicResponse(data);
|
|
12048
12081
|
if (_hasCompleteProviderUsage(data.usage)) {
|
|
12082
|
+
const cacheCreationTokens = _optionalProviderUsageCount(
|
|
12083
|
+
data.usage,
|
|
12084
|
+
"cache_creation_input_tokens",
|
|
12085
|
+
"cache_creation_tokens",
|
|
12086
|
+
);
|
|
12049
12087
|
normalized.usage = {
|
|
12050
12088
|
// With prompt caching, Anthropic splits input into uncached
|
|
12051
12089
|
// `input_tokens` + cache read/write — capture all three so cost
|
|
@@ -12066,11 +12104,11 @@ export async function chatWithTools(rawMessages, options) {
|
|
|
12066
12104
|
"cache_read_input_tokens",
|
|
12067
12105
|
"cache_read_tokens",
|
|
12068
12106
|
),
|
|
12069
|
-
cache_creation_input_tokens:
|
|
12070
|
-
|
|
12071
|
-
|
|
12072
|
-
|
|
12073
|
-
),
|
|
12107
|
+
cache_creation_input_tokens: cacheCreationTokens,
|
|
12108
|
+
...projectUsagePricingContext({
|
|
12109
|
+
...data.usage,
|
|
12110
|
+
cache_creation_input_tokens: cacheCreationTokens,
|
|
12111
|
+
}),
|
|
12074
12112
|
};
|
|
12075
12113
|
}
|
|
12076
12114
|
return normalized;
|
|
@@ -13067,11 +13105,12 @@ export function _openAIResponsesReasoningParams(
|
|
|
13067
13105
|
|
|
13068
13106
|
/**
|
|
13069
13107
|
* Decide the Anthropic `thinking` request params for a model. Returns null
|
|
13070
|
-
* (off) unless the caller opts in via options.thinking
|
|
13071
|
-
* "hard" | "ultra"). Model-aware per the Claude API:
|
|
13108
|
+
* (off) on legacy models unless the caller opts in via options.thinking
|
|
13109
|
+
* (true | "think" | "hard" | "ultra"). Model-aware per the Claude API:
|
|
13110
|
+
* - exact Haiku 5.5 → adaptive/medium by default, explicitly disableable
|
|
13072
13111
|
* - Opus 4.6/4.7/4.8, Sonnet 4.6 → adaptive thinking + output_config.effort
|
|
13073
13112
|
* - Sonnet 4.5 / Opus 4.0-4.5 / older → legacy enabled+budget (< max_tokens)
|
|
13074
|
-
* -
|
|
13113
|
+
* - other models, including older Haiku → null (no explicit thinking)
|
|
13075
13114
|
* temperature is never added (it 400s on Opus 4.7/4.8). Note: `xhigh`/`max`
|
|
13076
13115
|
* effort are Opus-tier — on Sonnet they may error; left to the caller's intent.
|
|
13077
13116
|
* RUNTIME-UNVERIFIED — no Anthropic key to validate the wire shape live.
|
|
@@ -13082,9 +13121,10 @@ export function _anthropicThinkingParams(
|
|
|
13082
13121
|
options = {},
|
|
13083
13122
|
maxTokens = 8192,
|
|
13084
13123
|
) {
|
|
13124
|
+
const m = String(model || "").toLowerCase();
|
|
13125
|
+
if (m === "claude-haiku-5-5") return haiku55ThinkingParams(m, options);
|
|
13085
13126
|
const want = options?.thinking;
|
|
13086
13127
|
if (!want) return null; // off by default → request unchanged
|
|
13087
|
-
const m = String(model || "").toLowerCase();
|
|
13088
13128
|
const adaptive = /opus-4-(6|7|8)/.test(m) || /sonnet-4-6/.test(m);
|
|
13089
13129
|
const legacy =
|
|
13090
13130
|
/sonnet-4-5/.test(m) ||
|
|
@@ -16320,12 +16360,27 @@ export async function* agentLoop(messages, options) {
|
|
|
16320
16360
|
toolName,
|
|
16321
16361
|
earlyAuthorityDenial,
|
|
16322
16362
|
);
|
|
16363
|
+
const preExecutionDenied =
|
|
16364
|
+
earlyAuthorityDenial.code === TOOL_RECOVERY_PAUSED_CODE;
|
|
16365
|
+
if (preExecutionDenied) {
|
|
16366
|
+
// Declare the rejected request without an execution/ledger boundary
|
|
16367
|
+
// or its arguments. Consumers can pair the refusal by provider ID.
|
|
16368
|
+
yield {
|
|
16369
|
+
type: "tool-pre-execution-denied",
|
|
16370
|
+
tool: toolName,
|
|
16371
|
+
tool_use_id: call.id,
|
|
16372
|
+
turn_id: `${runId}:t${budget.consumed}`,
|
|
16373
|
+
preExecutionDenied: true,
|
|
16374
|
+
execution_started: false,
|
|
16375
|
+
};
|
|
16376
|
+
}
|
|
16323
16377
|
yield {
|
|
16324
16378
|
type: "tool-result",
|
|
16325
16379
|
tool: toolName,
|
|
16326
16380
|
result: earlyAuthorityDenial,
|
|
16327
16381
|
error: earlyAuthorityDenial.error,
|
|
16328
16382
|
execution_started: false,
|
|
16383
|
+
...(preExecutionDenied ? { preExecutionDenied: true } : {}),
|
|
16329
16384
|
tool_use_id: call.id,
|
|
16330
16385
|
turn_id: `${runId}:t${budget.consumed}`,
|
|
16331
16386
|
permission_decision_id: decision?.id || null,
|
|
@@ -3231,6 +3231,19 @@ async function runAgentHeadlessInWorkspace(
|
|
|
3231
3231
|
});
|
|
3232
3232
|
break;
|
|
3233
3233
|
}
|
|
3234
|
+
case "tool-pre-execution-denied": {
|
|
3235
|
+
// A request declaration is not an invocation: do not start a
|
|
3236
|
+
// side effect, telemetry call, or persisted compact tool record.
|
|
3237
|
+
emitStream({
|
|
3238
|
+
type: "tool_use",
|
|
3239
|
+
id: event.tool_use_id,
|
|
3240
|
+
tool: event.tool,
|
|
3241
|
+
args: {},
|
|
3242
|
+
preExecutionDenied: true,
|
|
3243
|
+
execution_started: false,
|
|
3244
|
+
});
|
|
3245
|
+
break;
|
|
3246
|
+
}
|
|
3234
3247
|
case "tool-executing": {
|
|
3235
3248
|
const telemetryToolId = runtimeToolCallId(event.tool_use_id);
|
|
3236
3249
|
const line = ` [${event.tool}] ${formatToolArgs(event.tool, event.args)}`;
|
|
@@ -3352,6 +3365,10 @@ async function runAgentHeadlessInWorkspace(
|
|
|
3352
3365
|
...(event.execution_started === false
|
|
3353
3366
|
? { execution_started: false }
|
|
3354
3367
|
: {}),
|
|
3368
|
+
...(event.preExecutionDenied === true &&
|
|
3369
|
+
event.execution_started === false
|
|
3370
|
+
? { preExecutionDenied: true }
|
|
3371
|
+
: {}),
|
|
3355
3372
|
error: err,
|
|
3356
3373
|
result: event.result,
|
|
3357
3374
|
...(event.permission_decision_id
|
|
@@ -990,6 +990,19 @@ async function runTurn(
|
|
|
990
990
|
}
|
|
991
991
|
turnBindingFeed?.handleEvent(event);
|
|
992
992
|
switch (event.type) {
|
|
993
|
+
case "tool-pre-execution-denied": {
|
|
994
|
+
// Keep the request/result pair visible without plan/ledger execution
|
|
995
|
+
// bookkeeping and without exposing rejected request arguments.
|
|
996
|
+
emit({
|
|
997
|
+
type: "tool_use",
|
|
998
|
+
id: event.tool_use_id,
|
|
999
|
+
tool: event.tool,
|
|
1000
|
+
args: {},
|
|
1001
|
+
preExecutionDenied: true,
|
|
1002
|
+
execution_started: false,
|
|
1003
|
+
});
|
|
1004
|
+
break;
|
|
1005
|
+
}
|
|
993
1006
|
case "tool-executing": {
|
|
994
1007
|
// Additive protocol-v1 correlation id ("tu-<n>", session-scoped —
|
|
995
1008
|
// agent-sdk docs/PROTOCOL.md §1.2.1): the matching tool_result below
|
|
@@ -1129,6 +1142,10 @@ async function runTurn(
|
|
|
1129
1142
|
...(event.execution_started === false
|
|
1130
1143
|
? { execution_started: false }
|
|
1131
1144
|
: {}),
|
|
1145
|
+
...(event.preExecutionDenied === true &&
|
|
1146
|
+
event.execution_started === false
|
|
1147
|
+
? { preExecutionDenied: true }
|
|
1148
|
+
: {}),
|
|
1132
1149
|
error: err,
|
|
1133
1150
|
result: event.result,
|
|
1134
1151
|
...(event.permission_decision_id
|
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
* agent-core. Shared usage validation also serves non-streamed responses.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
+
import { projectUsagePricingContext } from "../lib/usage-pricing-context.js";
|
|
8
|
+
|
|
7
9
|
export function _isNonNegativeSafeInteger(value) {
|
|
8
10
|
return Number.isSafeInteger(value) && value >= 0;
|
|
9
11
|
}
|
|
@@ -114,6 +116,10 @@ export function _anthropicReduceLine(state, raw, onToken, onThinking) {
|
|
|
114
116
|
state.inputTokens = inputTokens;
|
|
115
117
|
state.cacheReadTokens = cacheReadTokens;
|
|
116
118
|
state.cacheCreationTokens = cacheCreationTokens;
|
|
119
|
+
state.pricingContext = projectUsagePricingContext({
|
|
120
|
+
...usage,
|
|
121
|
+
cache_creation_input_tokens: cacheCreationTokens,
|
|
122
|
+
});
|
|
117
123
|
}
|
|
118
124
|
}
|
|
119
125
|
} else if (obj.type === "content_block_start") {
|
|
@@ -215,6 +221,7 @@ export function _anthropicFinalize(state) {
|
|
|
215
221
|
output_tokens: state.outputTokens,
|
|
216
222
|
cache_read_input_tokens: state.cacheReadTokens,
|
|
217
223
|
cache_creation_input_tokens: state.cacheCreationTokens,
|
|
224
|
+
...state.pricingContext,
|
|
218
225
|
};
|
|
219
226
|
}
|
|
220
227
|
return out;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as v,P as u,J as y,U as n,R as a,S,K as C,Q as x,V as w,_ as k,b as s}from"./vendor-Bn1JzzAn.js";import{_ as B}from"./index-BHeHyLRM.js";import"./icons-DG5UD-6K.js";const M={__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"}),m=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:m,computed:s};return Object.defineProperty(_,"__isScriptSetup",{enumerable:!1,value:!0}),_}},N={class:"bubble"},T={class:"meta"},R={class:"actor"},V={class:"time"},q={class:"body"};function D(c,d,t,r,i,l){const o=v("a-tag");return u(),y("div",{class:k(["chat-row",{mine:r.isMine}])},[n("div",N,[n("div",T,[n("span",R,a(r.actorLabel),1),n("span",V,a(r.formattedTime),1)]),n("div",q,a(r.messageText),1),t.event.source.adapter?(u(),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=B(M,[["render",D],["__scopeId","data-v-49238629"],["__file","/tmp/cc-web-panel-yMktpQ/repo/packages/web-panel/src/components/pdh/renderers/ChatBubbleRenderer.vue"]]);export{A as default};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{I as s,J as g,U as d,c as n,K as _,V as k,S as V,R as S,F as W,Z as K,w as H,n as C,o as R,b as T,r,P as p,Q as M,_ as U}from"./vendor-Bn1JzzAn.js";import{_ as E,u as N}from"./index-BHeHyLRM.js";import{R as j}from"./icons-DG5UD-6K.js";const q={__name:"Logs",setup(Q,{expose:a}){a();const x=N(),e=r("status"),y=r(!1),v=r(""),i=r(""),c=r(""),f=r(!0),o=r(null),h={status:"status",doctor:"doctor","skill-sources":"skill sources","llm-providers":"llm providers"},m=T(()=>i.value.split(`
|
|
2
|
-
`)),b=T(()=>{if(!c.value)return m.value;const t=c.value.toLowerCase();return m.value.filter(u=>u.toLowerCase().includes(t))});function L(t){return t.includes("✖")||t.includes("error")||t.includes("Error")||t.includes("failed")?"line-error":t.includes("✔")||t.includes("✓")||t.includes("success")||t.includes("running")?"line-success":t.includes("warn")||t.includes("Warn")||t.includes("○")?"line-warn":t.startsWith(" ")||t.startsWith(" ")?"line-indent":""}function l(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function w(t){if(!c.value)return t;const u=c.value.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return t.replace(new RegExp(`(${u})`,"gi"),"<mark>$1</mark>")}async function O(){y.value=!0,v.value="",i.value="";const t=h[e.value]||"status";try{const{output:u}=await x.execute(t,3e4);i.value=u,f.value&&(await C(),o.value&&(o.value.scrollTop=o.value.scrollHeight))}catch(u){v.value=`执行失败: ${u.message}`,i.value=v.value}finally{y.value=!1}}H(b,async()=>{f.value&&(await C(),o.value&&(o.value.scrollTop=o.value.scrollHeight))}),R(O);const B={ws:x,activeTab:e,loading:y,error:v,rawOutput:i,searchQuery:c,autoScroll:f,logContainer:o,TAB_COMMANDS:h,allLines:m,filteredLines:b,lineClass:L,escapeHtml:l,highlightSearch:w,loadLog:O,ref:r,computed:T,watch:H,nextTick:C,onMounted:R,get ReloadOutlined(){return j},get useWsStore(){return N}};return Object.defineProperty(B,"__isScriptSetup",{enumerable:!1,value:!0}),B}},z={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},A={style:{display:"flex",gap:"10px",margin:"12px 0"}},D={ref:"logContainer",class:"log-box"},F={key:0,style:{"text-align":"center",padding:"40px",color:"var(--text-muted)"}},I={key:1,style:{"text-align":"center",padding:"40px",color:"var(--text-muted)"}},P={key:2},J=["innerHTML"];function Z(Q,a,x,e,y,v){const i=s("a-checkbox"),c=s("a-button"),f=s("a-space"),o=s("a-tab-pane"),h=s("a-tabs"),m=s("a-input-search"),b=s("a-tag"),L=s("a-spin");return p(),g("div",null,[d("div",z,[a[5]||(a[5]=d("div",null,[d("h2",{class:"page-title"},"日志查看"),d("p",{class:"page-sub"},"系统运行日志与诊断输出")],-1)),n(f,null,{default:_(()=>[n(i,{checked:e.autoScroll,"onUpdate:checked":a[0]||(a[0]=l=>e.autoScroll=l)},{default:_(()=>[...a[3]||(a[3]=[M("自动滚动",-1)])]),_:1},8,["checked"]),n(c,{type:"primary",ghost:"",loading:e.loading,onClick:e.loadLog},{icon:_(()=>[n(e.ReloadOutlined)]),default:_(()=>[a[4]||(a[4]=M(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),k(" Tab Selector "),n(h,{activeKey:e.activeTab,"onUpdate:activeKey":a[1]||(a[1]=l=>e.activeTab=l),onChange:e.loadLog,style:{"margin-bottom":"0"}},{default:_(()=>[n(o,{key:"status",tab:"系统状态"}),n(o,{key:"doctor",tab:"环境诊断"}),n(o,{key:"skill-sources",tab:"技能来源"}),n(o,{key:"llm-providers",tab:"LLM 提供商"})]),_:1},8,["activeKey"]),k(" Search Bar "),d("div",A,[n(m,{value:e.searchQuery,"onUpdate:value":a[2]||(a[2]=l=>e.searchQuery=l),placeholder:"搜索日志内容...","allow-clear":"",style:{flex:"1"}},null,8,["value"]),e.filteredLines.length!==e.allLines.length?(p(),V(b,{key:0,color:"blue"},{default:_(()=>[M(S(e.filteredLines.length)+" / "+S(e.allLines.length)+" 行 ",1)]),_:1})):k("v-if",!0)]),k(" Log Output "),d("div",D,[e.loading?(p(),g("div",F,[n(L,{size:"large"}),a[6]||(a[6]=d("div",{style:{"margin-top":"10px"}},"加载中...",-1))])):e.filteredLines.length?(p(),g("div",P,[(p(!0),g(W,null,K(e.filteredLines,(l,w)=>(p(),g("div",{key:w,class:U(["log-line",e.lineClass(l)]),innerHTML:e.highlightSearch(e.escapeHtml(l))},null,10,J))),128))])):(p(),g("div",I,S(e.error||"暂无日志内容,点击刷新加载"),1))],512)])}const $=E(q,[["render",Z],["__scopeId","data-v-8c2906e0"],["__file","/tmp/cc-web-panel-yMktpQ/repo/packages/web-panel/src/views/Logs.vue"]]);export{$ 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-BHeHyLRM.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 m(t,o,e,r,n,u){return c(),p("div",{class:"markdown-content",innerHTML:r.rendered},null,8,i)}const M=d(_,[["render",m],["__scopeId","data-v-0b0b9f63"],["__file","/tmp/cc-web-panel-yMktpQ/repo/packages/web-panel/src/components/MarkdownRenderer.vue"]]);export{M};
|
|
@@ -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 b}from"./vendor-Bn1JzzAn.js";import{_ as v,b as m}from"./index-BHeHyLRM.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}=m();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 m},get MobileOutlined(){return M},get FolderOutlined(){return y}};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}},x={class:"mobile-projects-placeholder"},O={class:"title"},k={class:"subtitle"},w={class:"explainer"};function T(p,i,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),b(" "+t(e.t("mobileProjects.viewLocalProjects")),1)]),_:1}),l(d,{onClick:e.goToMobileBridge},{default:r(()=>[l(e.MobileOutlined),b(" "+t(e.t("mobileProjects.checkBridge")),1)]),_:1})]),_:1})]),_:1})]),_:1})])}const N=v(B,[["render",T],["__scopeId","data-v-9262cc45"],["__file","/tmp/cc-web-panel-yMktpQ/repo/packages/web-panel/src/views/MobileProjects.vue"]]);export{N as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Q as r}from"./index-BHeHyLRM.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-91tl_err.js";import{a0 as t}from"./index-BHeHyLRM.js";import"./vendor-Bn1JzzAn.js";import"./index-B4Sf1AMk.js";import"./icons-DG5UD-6K.js";const s=t(o);export{s as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{A as o}from"./Row-Do2UbYkf.js";import{a0 as t}from"./index-BHeHyLRM.js";import"./vendor-Bn1JzzAn.js";import"./responsiveObserve-CRft03Vk.js";import"./useFlexGapSupport-BAuxWB7K.js";import"./styleChecker-Bw5Gw_2w.js";import"./index-B4Sf1AMk.js";import"./icons-DG5UD-6K.js";const l=t(o);export{l as default};
|