chainlesschain 0.166.128 → 0.166.129
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 +18 -4
- 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-BmGA5zXX.js → AIOps-CjPaaF2r.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-B7WXwoF0.js → ActionButton-_zlP_Z6z.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-IvJG43B5.js → Analytics-C7X31L8l.js} +2 -2
- package/src/assets/web-panel/assets/{AppLayout-DWY017_e.js → AppLayout-BmYa34Se.js} +5 -5
- package/src/assets/web-panel/assets/Artifacts-B_YKNjlp.js +1 -0
- package/src/assets/web-panel/assets/{Audit-CD9sTnBN.js → Audit-5JsI67XQ.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-J6gg5z0U.js → BackgroundAgents-BL3QbzvS.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-D7ik3lse.js → Backup-BRmg-gTa.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-MrDd5zcz.js → BaseInput-DNE7mT3K.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-DbxRqGiK.js → Chat-OYwAopdM.js} +5 -5
- package/src/assets/web-panel/assets/ChatBubbleRenderer-Dtxw3Wgt.js +1 -0
- package/src/assets/web-panel/assets/{Checkbox-CditB77B.js → Checkbox-nMgYkH8H.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-Ds0UZWZG.js → Codegen-B9G2ngLI.js} +1 -1
- package/src/assets/web-panel/assets/{Col-CZlj1XI2.js → Col-i0owJaGP.js} +1 -1
- package/src/assets/web-panel/assets/{Community-j4B2SoT6.js → Community-B3Ta0mI_.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-BuKQutaO.js → Compact-DDXrvvm-.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-DAgDyS-p.js → Compliance-Bn4Uq6U1.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-DX2-I6V3.js → Cowork-CO5NKD6r.js} +2 -2
- package/src/assets/web-panel/assets/{Cron-dJpc-FxX.js → Cron-ByjNese0.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-7m8euM3v.js → Crosschain-BN1FUYyi.js} +1 -1
- package/src/assets/web-panel/assets/{DID-CLoYoCe1.js → DID-CUFX5RL3.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-DR1rRMb7.js → Dashboard-D_2FDPBP.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-BsKhCfvH.js → Dropdown-lGOMtIzb.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-BAGexzJu.js → EmailListRenderer-DA3Qf1S2.js} +1 -1
- package/src/assets/web-panel/assets/EvolutionSettings-DLcnicCr.js +1 -0
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-BIpueefy.js → FamilyGuardDashboard-BPOSaIN1.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-BluNep6d.js → Federation-DzJUCQq8.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-CerdM3am.js → FormItemContext-DVx1XNKx.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-DXh4tOjU.js → GenericCardRenderer-BkqzO_lh.js} +1 -1
- package/src/assets/web-panel/assets/{Git-CEE0cGmf.js → Git-Dr_rdT_j.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-Bc-XNDhM.js → Governance-DyVkZddw.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-CiBzXyZ-.js → Inference-IN2YDd4v.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-CV2IiyuN.js → KnowledgeGraph-Ceiy4n6N.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-fbQYKuSz.js → Logs-d7pIEAX2.js} +2 -2
- package/src/assets/web-panel/assets/{MarkdownRenderer-B73ZyMRI.js → MarkdownRenderer-DmSl0MNI.js} +1 -1
- package/src/assets/web-panel/assets/{Marketplace-C5utdpxZ.js → Marketplace-uVE7U14g.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-CPE4SaF3.js → McpTools-DUfBM--y.js} +3 -3
- package/src/assets/web-panel/assets/{Memory-DTFDszzk.js → Memory-6gkcR02J.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-DxqPmTzP.js → MobileBridge-Cl6ys2O9.js} +1 -1
- package/src/assets/web-panel/assets/{MobileProjects-CwcK8l2y.js → MobileProjects-5P8jN4gf.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-DrjECLGO.js → Mtc-DtiT1Kol.js} +2 -2
- package/src/assets/web-panel/assets/{MtcAudit-4IURCa-3.js → MtcAudit-DZz8iiTE.js} +5 -5
- package/src/assets/web-panel/assets/{Multisig-CggLV1Cp.js → Multisig-DFH3-fBJ.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-DkOQJT73.js → NLProgramming-BYNuDOt-.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-Dodcva6s.js → Notes-BCY4jgYy.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-CQ3HeTs6.js → NotificationSettings-Bk2ltghU.js} +1 -1
- package/src/assets/web-panel/assets/OrderTableRenderer-OdeXEGAn.js +1 -0
- package/src/assets/web-panel/assets/{Organization-B6HFsIfU.js → Organization-CY4_mSiV.js} +2 -2
- package/src/assets/web-panel/assets/{Overflow-G9dju55N.js → Overflow-CaRUAOY_.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-C1BCE155.js → P2P-Bd96rBWQ.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-BFAxXn5D.js → PdhVaultBrowser-JjnExxan.js} +3 -3
- package/src/assets/web-panel/assets/{Permissions-DWg7cw9Q.js → Permissions-CW1PUJB0.js} +2 -2
- package/src/assets/web-panel/assets/{PersonalDataHub-BQxuOQOO.js → PersonalDataHub-BNn9alTk.js} +3 -3
- package/src/assets/web-panel/assets/{Pipeline-C3Gse9Ne.js → Pipeline-01_PBiUu.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-Dcsjx6Oi.js → Privacy-BP4DlVGb.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-DeYlnXJQ.js → ProjectInit-CAMnQj4n.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-D7kbZ_K7.js → ProjectSettings-DKxV5On_.js} +2 -2
- package/src/assets/web-panel/assets/{Projects-C5m3NGzM.js → Projects-B_4kRnM8.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-oT6jy83z.js → Providers-DeqqZyUv.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-NZ11GEBa.js → QrScannerModal-fFkycCT4.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-CtQU4Tx0.js → QuickAsk-Ln6qQidy.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-3CoXYu3O.js → Recommend-DeENA-y0.js} +1 -1
- package/src/assets/web-panel/assets/{RemoteSession-C2d4LzBM.js → RemoteSession-CRxSYxo4.js} +2 -2
- package/src/assets/web-panel/assets/{Reputation-WZQHrGwl.js → Reputation-B2kU2F0l.js} +1 -1
- package/src/assets/web-panel/assets/{Row-ChiqY7Hg.js → Row-lV_nLlFq.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-Cjwl2Kum.js → RssFeed-Df21mCdF.js} +2 -2
- package/src/assets/web-panel/assets/{Search-DRDMZxTF.js → Search-8_Dz4qU9.js} +1 -1
- package/src/assets/web-panel/assets/{Security-D0y4LlQ4.js → Security-Cl5-PEcp.js} +2 -2
- package/src/assets/web-panel/assets/{Services-ChpkqWm0.js → Services-C5qgCqA7.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-D3WGZ8yO.js → Skeleton-ASRgSh_Y.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-Bv_7HaUW.js → Skills-DWx01ZJ7.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-crZMKyX0.js → Sla-I2gbgtW8.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-ByWn5XDZ.js → SpeechSettings-BqTikzfe.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings--R55vxvj.js → SyncSettings-D3zCpBFV.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-BZA_Via_.js → Tasks-DjMWII45.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-9eJ9yY8Q.js → Templates-Cq7qDnHX.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-CfWX2jqj.js → Tenant-DEasKDpQ.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-CUXUF4kL.js → Terminal-J6fLkTzi.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-77y9bkYN.js → TimelineRenderer-CNvWrWN-.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-CvyrdLH6.js → Tokens-BSgHJCKH.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-MNRl_YNr.js → Trigger-DgGU_D0o.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-BHOXK-Mp.js → Trust-BANlv-uB.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-Bz1oZNyQ.js → UkeySign-qh8GPRsU.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-DlqmXyZv.js → VideoEditing-DBiGTB4H.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-Dg1rnqEG.js → Wallet-DMUFR7cL.js} +2 -2
- package/src/assets/web-panel/assets/{WebAuthn-DJtGeaOk.js → WebAuthn-DP9nQQzW.js} +3 -3
- package/src/assets/web-panel/assets/{WorkflowEditor-DJPubjX5.js → WorkflowEditor-DT_6jDkL.js} +1 -1
- package/src/assets/web-panel/assets/{chat-BWweDuIV.js → chat-C_kELmV6.js} +1 -1
- package/src/assets/web-panel/assets/{colors-BX5ViADF.js → colors-DE-ZxAv_.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-Df8MLbXp.js → compact-item-BowulLDi.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-C0FDTwdV.js → createContext-DCh8oMBQ.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-BVvJAp91.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-PpL6GdNk.js → hasIn-Be7mK-iw.js} +1 -1
- package/src/assets/web-panel/assets/{index-P1ERNJla.js → index-3Ql7xQLn.js} +1 -1
- package/src/assets/web-panel/assets/{index-BF0ERucU.js → index-4KkYmFy5.js} +1 -1
- package/src/assets/web-panel/assets/{index-B4UxFB2N.js → index-6OluUVJJ.js} +1 -1
- package/src/assets/web-panel/assets/{index-DGLbojjx.js → index-Ao-LXr-d.js} +1 -1
- package/src/assets/web-panel/assets/{index-D5Ei75Wt.js → index-B-3EDOlf.js} +1 -1
- package/src/assets/web-panel/assets/index-B7IhCfsh.js +1 -0
- package/src/assets/web-panel/assets/{index-R0LQ3fgq.js → index-BDIIR8g6.js} +1 -1
- package/src/assets/web-panel/assets/index-BMrbe_Ey.js +1 -0
- package/src/assets/web-panel/assets/{index-itNn6pW1.js → index-BdzVLz-c.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cj00JSqq.js → index-BlzMqaWB.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cm7vZvA3.js → index-BwY31W-u.js} +1 -1
- package/src/assets/web-panel/assets/{index-UXM5vpt4.js → index-C2pCquZC.js} +1 -1
- package/src/assets/web-panel/assets/{index-DBzaRg4E.js → index-CKmC6ugN.js} +1 -1
- package/src/assets/web-panel/assets/{index-Beh1kLwx.js → index-CL2hAUWh.js} +1 -1
- package/src/assets/web-panel/assets/{index-BMIEWinN.js → index-CUXfwAhF.js} +1 -1
- package/src/assets/web-panel/assets/{index-C2JU-gdS.js → index-CXvy8HrM.js} +1 -1
- package/src/assets/web-panel/assets/{index-FAZH69my.js → index-C_VnSUjh.js} +1 -1
- package/src/assets/web-panel/assets/{index-BeFhy4BX.js → index-CecGCLWI.js} +1 -1
- package/src/assets/web-panel/assets/{index-C0PqPK-8.js → index-Ck6MYKVN.js} +1 -1
- package/src/assets/web-panel/assets/{index-DxJqyIP8.js → index-Cvy4vdVW.js} +1 -1
- package/src/assets/web-panel/assets/{index-DddQd0_V.js → index-CwJfLNqv.js} +1 -1
- package/src/assets/web-panel/assets/{index-B3K1uZ7R.js → index-D3lOYd9_.js} +1 -1
- package/src/assets/web-panel/assets/{index-iif2A1eL.js → index-DEDVYN7D.js} +1 -1
- package/src/assets/web-panel/assets/{index-ChV82mzs.js → index-DLCzaLH4.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cf86RSQk.js → index-DMDaGPxG.js} +1 -1
- package/src/assets/web-panel/assets/{index-7VyVOEf7.js → index-DMKo49Um.js} +1 -1
- package/src/assets/web-panel/assets/{index-NdEUFm32.js → index-DN1AT3FH.js} +1 -1
- package/src/assets/web-panel/assets/{index-BWSCphaT.js → index-DOebEvgn.js} +1 -1
- package/src/assets/web-panel/assets/{index-D_6XIMVV.js → index-DPX3N4T8.js} +1 -1
- package/src/assets/web-panel/assets/{index-DFtzEEYe.js → index-DSRKtgJg.js} +1 -1
- package/src/assets/web-panel/assets/{index-B982oUKN.js → index-DSqZBvQM.js} +1 -1
- package/src/assets/web-panel/assets/{index-CxY_U5RT.js → index-DbrQO1p9.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dy8K2laU.js → index-DjC2TJeH.js} +1 -1
- package/src/assets/web-panel/assets/{index-C9N1u8jV.js → index-LVrxqU88.js} +1 -1
- package/src/assets/web-panel/assets/{index-C9FOwTgX.js → index-OH54KMLN.js} +1 -1
- package/src/assets/web-panel/assets/{index-CmMzB4C-.js → index-Qx8cTReg.js} +3 -3
- package/src/assets/web-panel/assets/{index-B8-pSyP7.js → index-_cYsz4df.js} +1 -1
- package/src/assets/web-panel/assets/{index-DwZkBGXd.js → index-lN916819.js} +1 -1
- package/src/assets/web-panel/assets/{index-C8wl7Ica.js → index-nLHTuHoT.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-DeMthvi4.js → initDefaultProps-BNhziAal.js} +1 -1
- package/src/assets/web-panel/assets/{motion-_7kbkzE0.js → motion-fUkbJz38.js} +1 -1
- package/src/assets/web-panel/assets/{move-gCI04pLw.js → move-rFx211Cl.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-D5UWHv2U.js → mtc-parser-CEP1wN3R.js} +1 -1
- package/src/assets/web-panel/assets/{omit-CDCZcqeS.js → omit-DacHd_Zm.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-DGMDLi3S.js → pickAttrs-Dqp58Ep2.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-C-3vC1Vh.js → placementArrow-Cv6Rm0pV.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-vdoYucvi.js → responsiveObserve-rNE0p9ZW.js} +1 -1
- package/src/assets/web-panel/assets/{slide-B62FhgyZ.js → slide-C97JxD4S.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-DCLlfnym.js → statusUtils-Cxk1gV9M.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-CGvQ4LRR.js → styleChecker-CbtKKsPo.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-BqkGoKwe.js → useFlexGapSupport-CQATs2JQ.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-Bkr_nU3q.js → useFs-6c7qrpE_.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-CYxMIUEq.js → usePersonalDataHub-OjxtBGe7.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-sAbcY1FX.js → vnode-CSlXfUSh.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-Dm2pLrXi.js → zoom-Cc1qKiSZ.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/data/changelog.json +13 -0
- package/src/lib/codex-app-server-adapter.js +36 -22
- package/src/lib/codex-app-server-support.js +91 -0
- package/src/lib/coding-change-review-context.js +258 -0
- package/src/lib/coding-task-guidance.js +3 -0
- package/src/lib/context-memory-kernel/provider-context.js +22 -12
- package/src/runtime/agent-core.js +125 -40
- package/src/assets/web-panel/assets/Artifacts-BOyohM_-.js +0 -1
- package/src/assets/web-panel/assets/ChatBubbleRenderer-DbeJAwMg.js +0 -1
- package/src/assets/web-panel/assets/EvolutionSettings-BqYYmC01.js +0 -1
- package/src/assets/web-panel/assets/OrderTableRenderer-pT2nzmIO.js +0 -1
- package/src/assets/web-panel/assets/devWarning-BgM5vq1s.js +0 -1
- package/src/assets/web-panel/assets/index-Bl-HTXWn.js +0 -1
- package/src/assets/web-panel/assets/index-Cxf0YfM5.js +0 -1
|
@@ -69,6 +69,7 @@ import {
|
|
|
69
69
|
CODING_TASK_QUALITY_GUIDANCE,
|
|
70
70
|
CODING_CHANGE_REVIEW_PROMPT,
|
|
71
71
|
} from "../lib/coding-task-guidance.js";
|
|
72
|
+
import { CodingChangeReviewContext } from "../lib/coding-change-review-context.js";
|
|
72
73
|
import { RemoteReadLoopGuard } from "../lib/remote-read-loop-guard.js";
|
|
73
74
|
import {
|
|
74
75
|
isPrActionRequest,
|
|
@@ -14714,8 +14715,9 @@ export async function* agentLoop(messages, options) {
|
|
|
14714
14715
|
const { HostResourceBudget } = await import("../lib/host-resource-budget.js");
|
|
14715
14716
|
const hostResourceBudget =
|
|
14716
14717
|
options.hostResourceBudget || new HostResourceBudget();
|
|
14717
|
-
|
|
14718
|
+
let taskProgressTracker =
|
|
14718
14719
|
options.taskProgressTracker || new TaskProgressTracker();
|
|
14720
|
+
const hostTaskProgressTracker = taskProgressTracker;
|
|
14719
14721
|
// A subtree preflight is deliberately not an executed mutation. Keep this
|
|
14720
14722
|
// obligation outside transcript compaction and never replay it automatically.
|
|
14721
14723
|
const pendingSubtreeMutations = new Map();
|
|
@@ -14723,6 +14725,22 @@ export async function* agentLoop(messages, options) {
|
|
|
14723
14725
|
let hasFileContentChanges = false;
|
|
14724
14726
|
// Headless outer turns share this object; a new user turn gets a fresh one.
|
|
14725
14727
|
const changeReviewState = options._changeReviewState || { requested: false };
|
|
14728
|
+
let independentReviewContext = null;
|
|
14729
|
+
let independentReviewSetupError = null;
|
|
14730
|
+
const appendMessages = (...entries) => {
|
|
14731
|
+
// Keep complete review tool groups in both the durable conversation and a
|
|
14732
|
+
// separate request journal. Canonical compaction cannot restore author
|
|
14733
|
+
// rationale to this journal or remove its current file observations.
|
|
14734
|
+
independentReviewContext?.record(...entries);
|
|
14735
|
+
messages.push(...entries);
|
|
14736
|
+
};
|
|
14737
|
+
const recordTaskProgress = (...args) => {
|
|
14738
|
+
const advanced = taskProgressTracker.record(...args);
|
|
14739
|
+
if (taskProgressTracker !== hostTaskProgressTracker) {
|
|
14740
|
+
hostTaskProgressTracker.record(...args);
|
|
14741
|
+
}
|
|
14742
|
+
return advanced;
|
|
14743
|
+
};
|
|
14726
14744
|
const recordSubtreeMutation = (tool, args, result) => {
|
|
14727
14745
|
if (!GUARDED_FILE_MUTATION_TOOLS.has(tool)) return;
|
|
14728
14746
|
if (!args || typeof args !== "object" || Array.isArray(args)) return;
|
|
@@ -14788,6 +14806,23 @@ export async function* agentLoop(messages, options) {
|
|
|
14788
14806
|
{ cwd: options.cwd || process.cwd() },
|
|
14789
14807
|
);
|
|
14790
14808
|
const hermeticExecution = options.hermeticExecution === true;
|
|
14809
|
+
if (options.reviewChanges === true && hermeticExecution) {
|
|
14810
|
+
if (changeReviewState.independentReviewPending === true) {
|
|
14811
|
+
const error = new Error(
|
|
14812
|
+
"An interrupted independent review cannot resume from author history; the task remains incomplete.",
|
|
14813
|
+
);
|
|
14814
|
+
error.code = "CC_CHANGE_REVIEW_RECONSTRUCTION_REQUIRED";
|
|
14815
|
+
throw error;
|
|
14816
|
+
}
|
|
14817
|
+
try {
|
|
14818
|
+
independentReviewContext = new CodingChangeReviewContext(messages);
|
|
14819
|
+
} catch (error) {
|
|
14820
|
+
// An explanation without writes still keeps its old behavior. If a
|
|
14821
|
+
// mutation later arms review, stop before an extra call rather than
|
|
14822
|
+
// silently falling back to the author's summarized context.
|
|
14823
|
+
independentReviewSetupError = error;
|
|
14824
|
+
}
|
|
14825
|
+
}
|
|
14791
14826
|
if (
|
|
14792
14827
|
fileMutationScope &&
|
|
14793
14828
|
(options.exactToolNames !== true || !hermeticExecution)
|
|
@@ -15191,8 +15226,8 @@ export async function* agentLoop(messages, options) {
|
|
|
15191
15226
|
// one-shot guard means a model that keeps returning empty turns completes
|
|
15192
15227
|
// rather than looping forever (the iteration budget is the hard backstop).
|
|
15193
15228
|
let emptyThinkingReprompted = false;
|
|
15194
|
-
|
|
15195
|
-
|
|
15229
|
+
let readFileLoopGuard = new ReadFileLoopGuard();
|
|
15230
|
+
let remoteReadLoopGuard = new RemoteReadLoopGuard();
|
|
15196
15231
|
const prActionTask = isPrActionRequest(messages);
|
|
15197
15232
|
// Keep an explicit user-requested PR close action alive even if the
|
|
15198
15233
|
// conversation is compacted down to tool evidence. It is guidance only;
|
|
@@ -15302,7 +15337,11 @@ export async function* agentLoop(messages, options) {
|
|
|
15302
15337
|
// threshold. Settlement persists a bounded resume checkpoint before the
|
|
15303
15338
|
// live array changes; the earlier hash-chained result events remain the
|
|
15304
15339
|
// durable evidence for audit/recovery.
|
|
15305
|
-
if (
|
|
15340
|
+
if (
|
|
15341
|
+
!independentReviewContext?.active &&
|
|
15342
|
+
options.runtimeResultRetention !== false &&
|
|
15343
|
+
messages.length > 32
|
|
15344
|
+
) {
|
|
15306
15345
|
const retentionConfig =
|
|
15307
15346
|
options.runtimeResultRetention &&
|
|
15308
15347
|
typeof options.runtimeResultRetention === "object"
|
|
@@ -15370,6 +15409,7 @@ export async function* agentLoop(messages, options) {
|
|
|
15370
15409
|
// dangling call; `preserveToolPairs` then guarantees compaction never
|
|
15371
15410
|
// orphans a tool result. Best-effort — a failure never aborts the run.
|
|
15372
15411
|
if (
|
|
15412
|
+
!independentReviewContext?.active &&
|
|
15373
15413
|
options.autoCompact !== false &&
|
|
15374
15414
|
!automaticCompactionSettlementBlocked &&
|
|
15375
15415
|
messages.length > 4
|
|
@@ -15915,7 +15955,7 @@ export async function* agentLoop(messages, options) {
|
|
|
15915
15955
|
// SubagentStop hooks are best-effort
|
|
15916
15956
|
}
|
|
15917
15957
|
}
|
|
15918
|
-
|
|
15958
|
+
appendMessages(
|
|
15919
15959
|
markRuntimeOnlySessionMessage({
|
|
15920
15960
|
role: "user",
|
|
15921
15961
|
content: _backgroundSubAgentResultText(entry),
|
|
@@ -15950,7 +15990,10 @@ export async function* agentLoop(messages, options) {
|
|
|
15950
15990
|
// Turn-scoped context injection (open-agents prepareCall parity).
|
|
15951
15991
|
// prepareCall runs fresh each iteration and returns an ephemeral
|
|
15952
15992
|
// system-message supplement that is NOT persisted to messages history.
|
|
15953
|
-
|
|
15993
|
+
const requestMessages = independentReviewContext?.active
|
|
15994
|
+
? independentReviewContext.project()
|
|
15995
|
+
: messages;
|
|
15996
|
+
let callMessages = requestMessages;
|
|
15954
15997
|
// Give a looping model a turn focused on search/action rather than another
|
|
15955
15998
|
// whole-file request. This changes discovery for one request only; runtime
|
|
15956
15999
|
// permissions are untouched and ordinary reads return on the next turn.
|
|
@@ -16021,7 +16064,9 @@ export async function* agentLoop(messages, options) {
|
|
|
16021
16064
|
}
|
|
16022
16065
|
: effectiveToolOptions;
|
|
16023
16066
|
const readContext = [
|
|
16024
|
-
|
|
16067
|
+
independentReviewContext?.active
|
|
16068
|
+
? null
|
|
16069
|
+
: options.getTaskWorklogContext?.(),
|
|
16025
16070
|
readFileLoopGuard.findingsHint,
|
|
16026
16071
|
readFileLoopGuard.progressHint,
|
|
16027
16072
|
remoteReadLoopGuard.findingsHint,
|
|
@@ -16031,11 +16076,11 @@ export async function* agentLoop(messages, options) {
|
|
|
16031
16076
|
// Preserve the last conversational turn and never split a tool call
|
|
16032
16077
|
// from its results. Source data must neither become system authority
|
|
16033
16078
|
// nor create an assistant prefill / a new generic user request.
|
|
16034
|
-
const resultIndex =
|
|
16079
|
+
const resultIndex = requestMessages.findLastIndex(
|
|
16035
16080
|
(message) => message.role === "tool",
|
|
16036
16081
|
);
|
|
16037
16082
|
if (resultIndex >= 0) {
|
|
16038
|
-
const result =
|
|
16083
|
+
const result = requestMessages[resultIndex];
|
|
16039
16084
|
const original =
|
|
16040
16085
|
typeof result.content === "string"
|
|
16041
16086
|
? result.content
|
|
@@ -16052,15 +16097,17 @@ export async function* agentLoop(messages, options) {
|
|
|
16052
16097
|
}
|
|
16053
16098
|
// Enrich only the ephemeral copy. This preserves signed assistant
|
|
16054
16099
|
// thinking blocks, the last tool result, and the persisted transcript.
|
|
16055
|
-
callMessages =
|
|
16100
|
+
callMessages = requestMessages.map((message, index) =>
|
|
16056
16101
|
index === resultIndex ? { ...result, content } : message,
|
|
16057
16102
|
);
|
|
16058
16103
|
} else {
|
|
16059
16104
|
// Full compaction can leave only the pinned request. Reiterate that
|
|
16060
16105
|
// exact request after the source data, not a replacement objective.
|
|
16061
|
-
const request =
|
|
16106
|
+
const request = requestMessages.findLast(
|
|
16107
|
+
(message) => message.role === "user",
|
|
16108
|
+
);
|
|
16062
16109
|
callMessages = [
|
|
16063
|
-
...
|
|
16110
|
+
...requestMessages,
|
|
16064
16111
|
...readContext.map((content) => ({ role: "assistant", content })),
|
|
16065
16112
|
{
|
|
16066
16113
|
role: "user",
|
|
@@ -16228,6 +16275,9 @@ export async function* agentLoop(messages, options) {
|
|
|
16228
16275
|
callMessages,
|
|
16229
16276
|
{
|
|
16230
16277
|
...options,
|
|
16278
|
+
...(independentReviewContext?.active
|
|
16279
|
+
? { contextMemoryRecall: false }
|
|
16280
|
+
: {}),
|
|
16231
16281
|
contextMemoryToolDefinitions:
|
|
16232
16282
|
getProviderToolDefinitions(iterationToolOptions),
|
|
16233
16283
|
contextMemoryTrustedSystemIndexes,
|
|
@@ -16243,6 +16293,15 @@ export async function* agentLoop(messages, options) {
|
|
|
16243
16293
|
}
|
|
16244
16294
|
}
|
|
16245
16295
|
|
|
16296
|
+
if (independentReviewContext?.active) {
|
|
16297
|
+
try {
|
|
16298
|
+
independentReviewContext.assertRequirementsPreserved(callMessages);
|
|
16299
|
+
} catch (error) {
|
|
16300
|
+
error.code = "CC_CHANGE_REVIEW_CONTEXT_LOST";
|
|
16301
|
+
throw error;
|
|
16302
|
+
}
|
|
16303
|
+
}
|
|
16304
|
+
|
|
16246
16305
|
const modelIdAttrs = recorder
|
|
16247
16306
|
? buildTelemetryAttributes({
|
|
16248
16307
|
turnId: `${runId}:t${budget.consumed}`,
|
|
@@ -16476,6 +16535,16 @@ export async function* agentLoop(messages, options) {
|
|
|
16476
16535
|
};
|
|
16477
16536
|
}
|
|
16478
16537
|
throwIfAborted(signal);
|
|
16538
|
+
if (
|
|
16539
|
+
independentReviewContext?.active &&
|
|
16540
|
+
changeReviewState.usageKnown === false
|
|
16541
|
+
) {
|
|
16542
|
+
const error = new Error(
|
|
16543
|
+
"Change review stopped with unknown provider usage; the task remains incomplete.",
|
|
16544
|
+
);
|
|
16545
|
+
error.code = "CC_CHANGE_REVIEW_USAGE_UNKNOWN";
|
|
16546
|
+
throw error;
|
|
16547
|
+
}
|
|
16479
16548
|
|
|
16480
16549
|
if (!msg) {
|
|
16481
16550
|
await _awaitBackgroundUsageSettlement(
|
|
@@ -16573,7 +16642,7 @@ export async function* agentLoop(messages, options) {
|
|
|
16573
16642
|
);
|
|
16574
16643
|
_throwBackgroundUsageFailureState(backgroundUsageFailureState);
|
|
16575
16644
|
throwIfAborted(signal);
|
|
16576
|
-
|
|
16645
|
+
appendMessages(
|
|
16577
16646
|
markRuntimeOnlySessionMessage({
|
|
16578
16647
|
role: "assistant",
|
|
16579
16648
|
content: msg.content || "",
|
|
@@ -16583,7 +16652,7 @@ export async function* agentLoop(messages, options) {
|
|
|
16583
16652
|
backgroundSubAgents,
|
|
16584
16653
|
)) {
|
|
16585
16654
|
_throwBackgroundSubAgentUsageFailure(entry);
|
|
16586
|
-
|
|
16655
|
+
appendMessages(
|
|
16587
16656
|
markRuntimeOnlySessionMessage({
|
|
16588
16657
|
role: "user",
|
|
16589
16658
|
content:
|
|
@@ -16615,13 +16684,13 @@ export async function* agentLoop(messages, options) {
|
|
|
16615
16684
|
const pending = [...pendingSubtreeMutations.values()];
|
|
16616
16685
|
if (!subtreeMutationReprompted && budget.remaining() > 0) {
|
|
16617
16686
|
subtreeMutationReprompted = true;
|
|
16618
|
-
|
|
16687
|
+
appendMessages(
|
|
16619
16688
|
markRuntimeOnlySessionMessage({
|
|
16620
16689
|
role: "assistant",
|
|
16621
16690
|
content: msg.content || "",
|
|
16622
16691
|
}),
|
|
16623
16692
|
);
|
|
16624
|
-
|
|
16693
|
+
appendMessages(
|
|
16625
16694
|
markRuntimeOnlySessionMessage({
|
|
16626
16695
|
role: "user",
|
|
16627
16696
|
content:
|
|
@@ -16665,17 +16734,31 @@ export async function* agentLoop(messages, options) {
|
|
|
16665
16734
|
budget.hasRemaining()
|
|
16666
16735
|
) {
|
|
16667
16736
|
throwIfAborted(signal);
|
|
16737
|
+
if (independentReviewSetupError) throw independentReviewSetupError;
|
|
16668
16738
|
changeReviewState.requested = true;
|
|
16669
|
-
|
|
16739
|
+
const reviewPrompt = markRuntimeOnlySessionMessage({
|
|
16740
|
+
role: "user",
|
|
16741
|
+
content: CODING_CHANGE_REVIEW_PROMPT,
|
|
16742
|
+
});
|
|
16743
|
+
appendMessages(
|
|
16670
16744
|
markRuntimeOnlySessionMessage({
|
|
16671
16745
|
role: "assistant",
|
|
16672
16746
|
content: msg.content || "",
|
|
16673
16747
|
}),
|
|
16674
|
-
|
|
16675
|
-
role: "user",
|
|
16676
|
-
content: CODING_CHANGE_REVIEW_PROMPT,
|
|
16677
|
-
}),
|
|
16748
|
+
reviewPrompt,
|
|
16678
16749
|
);
|
|
16750
|
+
if (independentReviewContext) {
|
|
16751
|
+
independentReviewContext.activate(reviewPrompt);
|
|
16752
|
+
changeReviewState.independentReviewPending = true;
|
|
16753
|
+
// These are phase-local discovery hints, not permission or spend
|
|
16754
|
+
// authorities. Fresh inspection must not inherit author assertions,
|
|
16755
|
+
// old visible file pages, or a pause caused by author exploration.
|
|
16756
|
+
readFileLoopGuard = new ReadFileLoopGuard();
|
|
16757
|
+
remoteReadLoopGuard = new RemoteReadLoopGuard();
|
|
16758
|
+
taskProgressTracker = new TaskProgressTracker();
|
|
16759
|
+
toolContext.readFileLoopGuard = readFileLoopGuard;
|
|
16760
|
+
lastTaskProgressIntervention = null;
|
|
16761
|
+
}
|
|
16679
16762
|
yield {
|
|
16680
16763
|
type: "iteration-warning",
|
|
16681
16764
|
message: "Reviewing changed files against the task before finishing.",
|
|
@@ -16703,10 +16786,10 @@ export async function* agentLoop(messages, options) {
|
|
|
16703
16786
|
const _contentEmpty = !String(msg.content || "").trim();
|
|
16704
16787
|
if (_contentEmpty && _thinking && !emptyThinkingReprompted) {
|
|
16705
16788
|
emptyThinkingReprompted = true;
|
|
16706
|
-
|
|
16789
|
+
appendMessages(
|
|
16707
16790
|
markRuntimeOnlySessionMessage({ role: "assistant", content: "" }),
|
|
16708
16791
|
);
|
|
16709
|
-
|
|
16792
|
+
appendMessages(
|
|
16710
16793
|
markRuntimeOnlySessionMessage({
|
|
16711
16794
|
role: "user",
|
|
16712
16795
|
content:
|
|
@@ -16770,13 +16853,13 @@ export async function* agentLoop(messages, options) {
|
|
|
16770
16853
|
}
|
|
16771
16854
|
if (stopOutcome && stopOutcome.decision === "block") {
|
|
16772
16855
|
stopHookActive = true;
|
|
16773
|
-
|
|
16856
|
+
appendMessages(
|
|
16774
16857
|
markRuntimeOnlySessionMessage({
|
|
16775
16858
|
role: "assistant",
|
|
16776
16859
|
content: msg.content || "",
|
|
16777
16860
|
}),
|
|
16778
16861
|
);
|
|
16779
|
-
|
|
16862
|
+
appendMessages(
|
|
16780
16863
|
markRuntimeOnlySessionMessage({
|
|
16781
16864
|
role: "user",
|
|
16782
16865
|
content:
|
|
@@ -16792,6 +16875,9 @@ export async function* agentLoop(messages, options) {
|
|
|
16792
16875
|
continue;
|
|
16793
16876
|
}
|
|
16794
16877
|
}
|
|
16878
|
+
if (independentReviewContext?.active) {
|
|
16879
|
+
changeReviewState.independentReviewPending = false;
|
|
16880
|
+
}
|
|
16795
16881
|
yield { type: "run-ended", runId, reason: "complete" };
|
|
16796
16882
|
return;
|
|
16797
16883
|
}
|
|
@@ -16815,7 +16901,7 @@ export async function* agentLoop(messages, options) {
|
|
|
16815
16901
|
}
|
|
16816
16902
|
|
|
16817
16903
|
// Add assistant message with tool calls
|
|
16818
|
-
|
|
16904
|
+
appendMessages(msg);
|
|
16819
16905
|
readFileLoopGuard.startBatch();
|
|
16820
16906
|
|
|
16821
16907
|
// Concurrent READ-ONLY batch (latency optimization). When every call in the
|
|
@@ -16935,7 +17021,7 @@ export async function* agentLoop(messages, options) {
|
|
|
16935
17021
|
if (fatalError) throw fatalError;
|
|
16936
17022
|
throwIfAborted(signal);
|
|
16937
17023
|
recordSubtreeMutation(call.function.name, toolArgs, toolResult);
|
|
16938
|
-
const taskAdvanced =
|
|
17024
|
+
const taskAdvanced = recordTaskProgress(
|
|
16939
17025
|
call.function.name,
|
|
16940
17026
|
toolResult,
|
|
16941
17027
|
toolArgs,
|
|
@@ -16968,7 +17054,7 @@ export async function* agentLoop(messages, options) {
|
|
|
16968
17054
|
const resultStr = toolResultForModel(
|
|
16969
17055
|
call.function.name,
|
|
16970
17056
|
toolResult,
|
|
16971
|
-
|
|
17057
|
+
requestMessages,
|
|
16972
17058
|
);
|
|
16973
17059
|
const toolContent = warningMsg
|
|
16974
17060
|
? `${resultStr}\n\n${warningMsg}`
|
|
@@ -16995,7 +17081,7 @@ export async function* agentLoop(messages, options) {
|
|
|
16995
17081
|
toolResult,
|
|
16996
17082
|
);
|
|
16997
17083
|
if (nestedOutcomeUnknown) throw nestedOutcomeUnknown;
|
|
16998
|
-
|
|
17084
|
+
appendMessages({
|
|
16999
17085
|
role: "tool",
|
|
17000
17086
|
content: toolContent,
|
|
17001
17087
|
tool_call_id: call.id,
|
|
@@ -17052,7 +17138,7 @@ export async function* agentLoop(messages, options) {
|
|
|
17052
17138
|
tool_use_id: call?.id || null,
|
|
17053
17139
|
turn_id: `${runId}:t${budget.consumed}`,
|
|
17054
17140
|
};
|
|
17055
|
-
|
|
17141
|
+
appendMessages({
|
|
17056
17142
|
role: "tool",
|
|
17057
17143
|
content: `Error: ${reason}.`,
|
|
17058
17144
|
tool_call_id: call?.id,
|
|
@@ -17111,12 +17197,7 @@ export async function* agentLoop(messages, options) {
|
|
|
17111
17197
|
readFileLoopGuard.record(
|
|
17112
17198
|
toolName,
|
|
17113
17199
|
earlyAuthorityDenial,
|
|
17114
|
-
|
|
17115
|
-
toolName,
|
|
17116
|
-
earlyAuthorityDenial,
|
|
17117
|
-
toolArgs,
|
|
17118
|
-
runId,
|
|
17119
|
-
),
|
|
17200
|
+
recordTaskProgress(toolName, earlyAuthorityDenial, toolArgs, runId),
|
|
17120
17201
|
);
|
|
17121
17202
|
const resultStr = capToolResultString(
|
|
17122
17203
|
safeStringifyToolResult(earlyAuthorityDenial),
|
|
@@ -17152,7 +17233,7 @@ export async function* agentLoop(messages, options) {
|
|
|
17152
17233
|
permission_decision_id: decision?.id || null,
|
|
17153
17234
|
permission_decision: decision,
|
|
17154
17235
|
};
|
|
17155
|
-
|
|
17236
|
+
appendMessages({
|
|
17156
17237
|
role: "tool",
|
|
17157
17238
|
content: resultStr,
|
|
17158
17239
|
tool_call_id: call.id,
|
|
@@ -17477,9 +17558,13 @@ export async function* agentLoop(messages, options) {
|
|
|
17477
17558
|
// Cap an individual tool result so one giant output can't blow the
|
|
17478
17559
|
// context — but tell the model when we cut it (no more silent
|
|
17479
17560
|
// mid-content slice). See MAX_TOOL_RESULT_CHARS / capToolResultString.
|
|
17480
|
-
const resultStr = toolResultForModel(
|
|
17561
|
+
const resultStr = toolResultForModel(
|
|
17562
|
+
toolName,
|
|
17563
|
+
toolResult,
|
|
17564
|
+
requestMessages,
|
|
17565
|
+
);
|
|
17481
17566
|
recordSubtreeMutation(toolName, toolArgs, toolResult);
|
|
17482
|
-
const taskAdvanced =
|
|
17567
|
+
const taskAdvanced = recordTaskProgress(
|
|
17483
17568
|
toolName,
|
|
17484
17569
|
toolResult,
|
|
17485
17570
|
toolArgs,
|
|
@@ -17519,7 +17604,7 @@ export async function* agentLoop(messages, options) {
|
|
|
17519
17604
|
);
|
|
17520
17605
|
if (nestedOutcomeUnknown) throw nestedOutcomeUnknown;
|
|
17521
17606
|
|
|
17522
|
-
|
|
17607
|
+
appendMessages({
|
|
17523
17608
|
role: "tool",
|
|
17524
17609
|
content: toolContent,
|
|
17525
17610
|
tool_call_id: call.id,
|
|
@@ -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-B73ZyMRI.js";import{u as F,_ as W,d as I}from"./index-CmMzB4C-.js";import{R as q}from"./icons-DG5UD-6K.js";import"./markdown-Bq2x0XsR.js";import"./markdown-DUKxbhE4.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,T=a.document||globalThis.document,L=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=L.createObjectURL(G),R=T.createElement("a");return R.href=E,R.download=n.title||n.id,T.body.appendChild(R),R.click(),R.remove(),L.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)?I.success("已删除"):I.error("删除失败")}async function A(){const i=await u.cleanExpired();I.info(i>0?`清理了 ${i} 个过期交付物`:"没有过期交付物")}async function l(i){await u.downloadArtifact(i)||I.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 I},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-bSyR5m/repo/packages/web-panel/src/views/Artifacts.vue"]]);export{de as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as v,P as m,J as S,U as n,R as a,S as y,K as C,Q as x,V as w,_ as B,b as s}from"./vendor-Bn1JzzAn.js";import{_ as k}from"./index-CmMzB4C-.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(),b=String(e.getMonth()+1).padStart(2,"0"),f=String(e.getDate()).padStart(2,"0"),g=String(e.getHours()).padStart(2,"0"),h=String(e.getMinutes()).padStart(2,"0");return`${p}-${b}-${f} ${g}:${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}),_}},R={class:"bubble"},T={class:"meta"},M={class:"actor"},V={class:"time"},q={class:"body"};function D(c,d,t,r,i,l){const o=v("a-tag");return m(),S("div",{class:B(["chat-row",{mine:r.isMine}])},[n("div",R,[n("div",T,[n("span",M,a(r.actorLabel),1),n("span",V,a(r.formattedTime),1)]),n("div",q,a(r.messageText),1),t.event.source.adapter?(m(),y(o,{key:0,class:"src",color:r.adapterColor},{default:C(()=>[x(a(t.event.source.adapter),1)]),_:1},8,["color"])):w("v-if",!0)])],2)}const A=k(N,[["render",D],["__scopeId","data-v-49238629"],["__file","/tmp/cc-web-panel-bSyR5m/repo/packages/web-panel/src/components/pdh/renderers/ChatBubbleRenderer.vue"]]);export{A as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as s,J as T,U as i,c as a,K as o,S as I,V as C,o as V,r as k,a as A,b as L,P as E,Q as c,R as v,F as z,Z as H}from"./vendor-Bn1JzzAn.js";import{_ as W,u as N,d}from"./index-CmMzB4C-.js";import{R as F}from"./icons-DG5UD-6K.js";function B(R){return["ask","agent"].map(t=>{const n=R?.readiness?.[t],e=n?.state==="admitted",m=n?.scope==="deployment-admission"&&n.runtimeVerification==="not_checked"&&Array.isArray(n.requiredCommands)&&n.requiredCommands.includes(t)&&(e?n.ready===!0&&n.taskReady===null:["not_configured","disabled","invalid","command_not_allowed"].includes(n.state)&&n.ready===!1&&n.taskReady===!1);return{command:t,state:m?n.state:"unknown",summary:m?e?"部署准入通过":"部署准入被阻断":"未提供准入诊断",detail:m&&typeof n.detail=="string"?n.detail:"当前 CLI 未提供可识别的部署准入诊断,请更新 CLI。",remediation:m&&typeof n.remediation=="string"?n.remediation:""}})}function U(R,t){for(const n of Object.keys(R))delete R[n];Object.assign(R,{source:"none",effectiveEnabled:!1,profileEnabled:!1,verified:!1,commands:[],readiness:null},t||{})}const J={__name:"EvolutionSettings",setup(R,{expose:t}){t();const n=N(),e=k(!1),m=k(!1),S=k(!1),_=k(!1),P=k(!1),y=k(""),f=k(""),p=k(""),u=A({source:"none",effectiveEnabled:!1,profileEnabled:!1,verified:!1,commands:[]}),x=L(()=>e.value||m.value||S.value||_.value||P.value),O=L(()=>B(u));function w(r){U(u,r),f.value=u.descriptorPath||"",p.value=u.trustRootPath||"",y.value=u.modulePath||y.value||""}async function g(r,q=3e4){return await n.waitConnected(8e3),(await n.sendRaw(r,q)).result}async function h(){e.value=!0;try{w(await g({type:"evolution.deployment.status"}))}catch(r){d.error("读取配置失败:"+r.message)}finally{e.value=!1}}async function b(){if(!f.value.trim()||!p.value.trim()){d.warning("请填写描述符和信任根公钥的绝对路径");return}m.value=!0;try{w(await g({type:"evolution.deployment.configure",descriptorPath:f.value.trim(),trustRootPath:p.value.trim()},6e4)),d.success("签名校验通过,配置已保存并启用;自动发布仍为 HOLD")}catch(r){d.error("配置失败:"+r.message)}finally{m.value=!1}}async function D(){if(!y.value.trim()){d.warning("请填写测试部署宿主模块的服务器绝对路径");return}_.value=!0;try{w(await g({type:"evolution.deployment.init-test",modulePath:y.value.trim()},6e4)),d.success("TEST 测试开发环境已生成并启用;禁止用于生产")}catch(r){d.error("生成测试环境失败:"+r.message)}finally{_.value=!1}}async function j(){if(!f.value.trim()||!p.value.trim()){d.warning("请填写正式描述符和正式信任根公钥的绝对路径");return}P.value=!0;try{w(await g({type:"evolution.deployment.replace-test",descriptorPath:f.value.trim(),trustRootPath:p.value.trim()},6e4)),d.success("测试根已安全轮换为正式受管证书;请重启 cc ui、IDE 或 Desktop 长驻进程后做正式验证")}catch(r){d.error("替换失败:"+r.message)}finally{P.value=!1}}async function l(){S.value=!0;try{w(await g({type:"evolution.deployment.set-enabled",enabled:!u.profileEnabled})),d.success(u.profileEnabled?"已启用":"已停用")}catch(r){d.error("更新失败:"+r.message)}finally{S.value=!1}}V(h);const M={ws:n,loading:e,saving:m,toggling:S,initializingTest:_,replacingTest:P,modulePath:y,descriptorPath:f,trustRootPath:p,status:u,busy:x,readinessRows:O,apply:w,request:g,loadStatus:h,save:b,initTest:D,replaceTest:j,toggle:l,computed:L,onMounted:V,reactive:A,ref:k,get ReloadOutlined(){return F},get message(){return d},get useWsStore(){return N},get deploymentReadinessRows(){return B},get replaceDeploymentStatus(){return U}};return Object.defineProperty(M,"__isScriptSetup",{enumerable:!1,value:!0}),M}},Q={class:"page-head"},K={class:"mono"},Z={class:"mono"},G={class:"admission-status","aria-live":"polite"},X=["data-admission-command"],Y={class:"mono"},$={key:0,class:"mono"};function ee(R,t,n,e,m,S){const _=s("a-button"),P=s("a-switch"),y=s("a-card"),f=s("a-alert"),p=s("a-input"),u=s("a-form-item"),x=s("a-divider"),O=s("a-space"),w=s("a-form"),g=s("a-col"),h=s("a-tag"),b=s("a-descriptions-item"),D=s("a-descriptions"),j=s("a-row");return E(),T("div",null,[i("div",Q,[t[4]||(t[4]=i("div",null,[i("h2",{class:"page-title"},"Skill 自进化配置"),i("p",{class:"page-sub"}," 默认关闭;CLI、IDE 插件与 cc ui 共用 evolution.enabled 配置。 ")],-1)),a(_,{loading:e.loading,onClick:e.loadStatus},{icon:o(()=>[a(e.ReloadOutlined)]),default:o(()=>[t[3]||(t[3]=c("刷新 ",-1))]),_:1},8,["loading"])]),a(y,{title:"自进化开关",class:"notice"},{default:o(()=>[a(P,{checked:e.status.profileEnabled,loading:e.toggling,disabled:e.busy||e.loading,"checked-children":"已开启","un-checked-children":"已关闭",onChange:e.toggle},null,8,["checked","loading","disabled"]),t[5]||(t[5]=i("p",null," 关闭后仍可正常聊天和使用 Agent。首次开启会初始化本地运行时,也可使用下方配置的部署。 ",-1)),t[6]||(t[6]=i("p",null," Quick Ask 的下一次请求生效;正在运行的 Agent 会话请停止后重新启动。候选项发布仍需人工审核。 ",-1)),t[7]||(t[7]=i("p",{class:"mono"},'config.json:"evolution": { "enabled": false }',-1))]),_:1}),a(f,{message:"自进化与自动发布分别控制",description:"开启后使用经过签名的 Skill 自进化运行时;自动发布始终保持 HOLD。",type:"info","show-icon":"",class:"notice"}),e.status.deploymentMode==="test"?(E(),I(f,{key:0,message:"当前为 TEST 测试开发环境",description:"本机自动生成的测试密钥不能用于生产。正式 descriptor 和 trust root 到位后,请使用下方“一键替换测试证书并转正式”。",type:"error","show-icon":"",class:"notice"})):C("v-if",!0),a(j,{gutter:16},{default:o(()=>[a(g,{xs:24,xl:15},{default:o(()=>[a(y,{title:"上线前测试与正式部署",class:"panel-card"},{default:o(()=>[a(w,{layout:"vertical"},{default:o(()=>[a(u,{label:"测试部署宿主模块"},{extra:o(()=>[...t[8]||(t[8]=[c("首次填写后点击一次即可生成 Ed25519 测试密钥、签名描述符并启用;宿主模块修改后再次点击可刷新。",-1)])]),default:o(()=>[a(p,{value:e.modulePath,"onUpdate:value":t[0]||(t[0]=l=>e.modulePath=l),disabled:e.busy,placeholder:"运行 cc ui 的机器上 deployment host .mjs/.js 的绝对路径"},null,8,["value","disabled"])]),_:1}),a(_,{type:"primary",loading:e.initializingTest,onClick:e.initTest},{default:o(()=>[...t[9]||(t[9]=[c("一键生成/刷新测试环境",-1)])]),_:1},8,["loading"]),a(x),a(u,{label:"签名部署描述符"},{extra:o(()=>[...t[10]||(t[10]=[c("Web 页面不能读取本机文件选择器,请填写运行 cc ui 的机器上的绝对路径。",-1)])]),default:o(()=>[a(p,{value:e.descriptorPath,"onUpdate:value":t[1]||(t[1]=l=>e.descriptorPath=l),disabled:e.busy,placeholder:"deployment descriptor JSON 的服务器绝对路径"},null,8,["value","disabled"])]),_:1}),a(u,{label:"Ed25519 信任根公钥"},{default:o(()=>[a(p,{value:e.trustRootPath,"onUpdate:value":t[2]||(t[2]=l=>e.trustRootPath=l),disabled:e.busy,placeholder:"信任根 public key 的服务器绝对路径"},null,8,["value","disabled"])]),_:1}),a(O,null,{default:o(()=>[a(_,{type:"primary",loading:e.saving,onClick:e.save},{default:o(()=>[...t[11]||(t[11]=[c("校验、保存并启用",-1)])]),_:1},8,["loading"]),e.status.deploymentMode==="test"?(E(),I(_,{key:0,loading:e.replacingTest,onClick:e.replaceTest},{default:o(()=>[...t[12]||(t[12]=[c("一键替换测试证书并转正式",-1)])]),_:1},8,["loading"])):C("v-if",!0)]),_:1})]),_:1})]),_:1})]),_:1}),a(g,{xs:24,xl:9},{default:o(()=>[a(y,{title:"治理状态",class:"panel-card status-card"},{default:o(()=>[a(D,{column:1,size:"small"},{default:o(()=>[a(b,{label:"部署模式"},{default:o(()=>[a(h,{color:e.status.deploymentMode==="test"?"red":"blue"},{default:o(()=>[c(v(e.status.deploymentMode==="test"?"TEST(仅限上线前联调)":e.status.deploymentMode||"none"),1)]),_:1},8,["color"])]),_:1}),a(b,{label:"生效状态"},{default:o(()=>[a(h,{color:e.status.effectiveEnabled?"green":"default"},{default:o(()=>[c(v(e.status.effectiveEnabled?"已启用":"未启用"),1)]),_:1},8,["color"])]),_:1}),a(b,{label:"生效来源"},{default:o(()=>[c(v(e.status.source||"none"),1)]),_:1}),a(b,{label:"签名校验"},{default:o(()=>[a(h,{color:e.status.verified?"green":"red"},{default:o(()=>[c(v(e.status.verified?"已通过":"未通过"),1)]),_:1},8,["color"])]),_:1}),a(b,{label:"自动发布"},{default:o(()=>[a(h,{color:"orange"},{default:o(()=>[...t[13]||(t[13]=[c("HOLD",-1)])]),_:1})]),_:1}),a(b,{label:"配置文件"},{default:o(()=>[i("span",K,v(e.status.profilePath||"—"),1)]),_:1}),a(b,{label:"允许命令"},{default:o(()=>[i("span",Z,v((e.status.commands||[]).join(", ")||"—"),1)]),_:1})]),_:1}),i("section",G,[t[14]||(t[14]=i("h3",null,"自进化部署准入",-1)),t[15]||(t[15]=i("p",null,"这里只检查部署准入,实际任务运行尚未验证。",-1)),(E(!0),T(z,null,H(e.readinessRows,l=>(E(),T("div",{key:l.command,"data-admission-command":l.command},[i("strong",null,v(l.command)+":"+v(l.summary),1),i("p",Y,v(l.detail),1),l.remediation?(E(),T("p",$,v(l.remediation),1)):C("v-if",!0)],8,X))),128))]),e.status.error?(E(),I(f,{key:0,message:e.status.error,type:"error","show-icon":"",class:"error"},null,8,["message"])):C("v-if",!0)]),_:1})]),_:1})]),_:1})])}const le=W(J,[["render",ee],["__scopeId","data-v-5a42105e"],["__file","/tmp/cc-web-panel-bSyR5m/repo/packages/web-panel/src/views/EvolutionSettings.vue"]]);export{le as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as h,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 w}from"./index-CmMzB4C-.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"}),S=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:S,computed:a};return Object.defineProperty(x,"__isScriptSetup",{enumerable:!1,value:!0}),x}},N={class:"order-card"},C={class:"head"},O={class:"time"},R={class:"row"},V={class:"val"},B={class:"row"},D={class:"val"},I={class:"row amount-row"},j={class:"val amount"},A={key:0,class:"row"},F={class:"val mono"},M={key:1,class:"row"};function P(p,r,o,e,d,m){const c=h("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",R,[r[0]||(r[0]=s("span",{class:"key"},"商户",-1)),s("span",V,n(e.merchantText),1)]),s("div",B,[r[1]||(r[1]=s("span",{class:"key"},"商品/项目",-1)),s("span",D,n(e.itemText),1)]),s("div",I,[r[2]||(r[2]=s("span",{class:"key"},"金额",-1)),s("span",j,n(e.amountText),1)]),e.orderNo?(l(),u("div",A,[r[3]||(r[3]=s("span",{class:"key"},"单号",-1)),s("span",F,n(e.orderNo),1)])):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 K=w(k,[["render",P],["__scopeId","data-v-5ed5524d"],["__file","/tmp/cc-web-panel-bSyR5m/repo/packages/web-panel/src/components/pdh/renderers/OrderTableRenderer.vue"]]);export{K as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Q as r}from"./index-CmMzB4C-.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-CZlj1XI2.js";import{a0 as t}from"./index-CmMzB4C-.js";import"./vendor-Bn1JzzAn.js";import"./index-C9FOwTgX.js";import"./icons-DG5UD-6K.js";const s=t(o);export{s as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{A as o}from"./Row-ChiqY7Hg.js";import{a0 as t}from"./index-CmMzB4C-.js";import"./vendor-Bn1JzzAn.js";import"./responsiveObserve-vdoYucvi.js";import"./useFlexGapSupport-BqkGoKwe.js";import"./styleChecker-CGvQ4LRR.js";import"./index-C9FOwTgX.js";import"./icons-DG5UD-6K.js";const l=t(o);export{l as default};
|