chainlesschain 0.166.129 → 0.166.130
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 +8 -2
- 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-CjPaaF2r.js → AIOps-o-rFKEYL.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-_zlP_Z6z.js → ActionButton-Dzv1ReHF.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-C7X31L8l.js → Analytics-Bt7H_jrh.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-BmYa34Se.js → AppLayout-CgynsRFP.js} +4 -4
- package/src/assets/web-panel/assets/{Artifacts-B_YKNjlp.js → Artifacts-gghOGDyE.js} +1 -1
- package/src/assets/web-panel/assets/{Audit-5JsI67XQ.js → Audit-DBXn-AZ6.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-BL3QbzvS.js → BackgroundAgents--dxPftKa.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-BRmg-gTa.js → Backup-D9Zf_2tH.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-DNE7mT3K.js → BaseInput-DDTOjovq.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-OYwAopdM.js → Chat-2ETqdBLn.js} +6 -6
- package/src/assets/web-panel/assets/{ChatBubbleRenderer-Dtxw3Wgt.js → ChatBubbleRenderer-DSg2Xs8G.js} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-nMgYkH8H.js → Checkbox-B5uzaLLP.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-B9G2ngLI.js → Codegen-4ieEEIwt.js} +1 -1
- package/src/assets/web-panel/assets/{Col-i0owJaGP.js → Col-D3I2kUGu.js} +1 -1
- package/src/assets/web-panel/assets/{Community-B3Ta0mI_.js → Community-DeYxFMJb.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-DDXrvvm-.js → Compact-5GigOmb8.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-Bn4Uq6U1.js → Compliance-DLVjbVUh.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-CO5NKD6r.js → Cowork-DfUKa0T5.js} +3 -3
- package/src/assets/web-panel/assets/{Cron-ByjNese0.js → Cron-_RpktpO5.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-BN1FUYyi.js → Crosschain-7x6xdbwH.js} +1 -1
- package/src/assets/web-panel/assets/{DID-CUFX5RL3.js → DID-ccVhToC1.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-D_2FDPBP.js → Dashboard-DhygcaoK.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-lGOMtIzb.js → Dropdown-DFplwXK7.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-DA3Qf1S2.js → EmailListRenderer-Bm01soCN.js} +1 -1
- package/src/assets/web-panel/assets/{EvolutionSettings-DLcnicCr.js → EvolutionSettings-C4v--DkD.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-BPOSaIN1.js → FamilyGuardDashboard-ChQXDBA3.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-DzJUCQq8.js → Federation-C0yomE-M.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-DVx1XNKx.js → FormItemContext-DtT3ZEZK.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-BkqzO_lh.js → GenericCardRenderer-DgITtFRv.js} +1 -1
- package/src/assets/web-panel/assets/{Git-Dr_rdT_j.js → Git-CCY42R8S.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-DyVkZddw.js → Governance-N66Bwvqg.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-IN2YDd4v.js → Inference-BkbPuR_2.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-Ceiy4n6N.js → KnowledgeGraph-B3PibXdA.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-d7pIEAX2.js → Logs-CUtNB_N6.js} +2 -2
- package/src/assets/web-panel/assets/{MarkdownRenderer-DmSl0MNI.js → MarkdownRenderer-D-V4dOe3.js} +1 -1
- package/src/assets/web-panel/assets/{Marketplace-uVE7U14g.js → Marketplace-DLNJb6Nr.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-DUfBM--y.js → McpTools-2zGjJb5K.js} +3 -3
- package/src/assets/web-panel/assets/{Memory-6gkcR02J.js → Memory-9rNZ1EvR.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-Cl6ys2O9.js → MobileBridge-Cw7sAAgn.js} +1 -1
- package/src/assets/web-panel/assets/{MobileProjects-5P8jN4gf.js → MobileProjects-8XACrqqy.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-DtiT1Kol.js → Mtc-mg02JNy-.js} +4 -4
- package/src/assets/web-panel/assets/{MtcAudit-DZz8iiTE.js → MtcAudit-B1Vkhj2l.js} +2 -2
- package/src/assets/web-panel/assets/{Multisig-DFH3-fBJ.js → Multisig-BQEeA7GG.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-BYNuDOt-.js → NLProgramming-BIbkjZV3.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-BCY4jgYy.js → Notes-DIwhkZNY.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-Bk2ltghU.js → NotificationSettings-Cj9175ce.js} +1 -1
- package/src/assets/web-panel/assets/OrderTableRenderer-IfNpXT2R.js +1 -0
- package/src/assets/web-panel/assets/{Organization-CY4_mSiV.js → Organization-DPFp6G9o.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-CaRUAOY_.js → Overflow-ky9UfGv4.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-Bd96rBWQ.js → P2P-tXck8GLq.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-JjnExxan.js → PdhVaultBrowser-DSvpQl9k.js} +3 -3
- package/src/assets/web-panel/assets/{Permissions-CW1PUJB0.js → Permissions-CKPkdLj-.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-BNn9alTk.js → PersonalDataHub-DnqXc12l.js} +4 -4
- package/src/assets/web-panel/assets/{Pipeline-01_PBiUu.js → Pipeline-BKjFU_kd.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-BP4DlVGb.js → Privacy-ChC-J5Tn.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-CAMnQj4n.js → ProjectInit-ByFZG9sY.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-DKxV5On_.js → ProjectSettings-Bbv1Kiw-.js} +2 -2
- package/src/assets/web-panel/assets/{Projects-B_4kRnM8.js → Projects-QYyGW31-.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-DeqqZyUv.js → Providers-CJLnWw0r.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-fFkycCT4.js → QrScannerModal-er_HkLCI.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-Ln6qQidy.js → QuickAsk-DoXU0np9.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-DeENA-y0.js → Recommend-DCo_vuaf.js} +1 -1
- package/src/assets/web-panel/assets/{RemoteSession-CRxSYxo4.js → RemoteSession-CLuL925Z.js} +2 -2
- package/src/assets/web-panel/assets/{Reputation-B2kU2F0l.js → Reputation-CNNCA_-M.js} +1 -1
- package/src/assets/web-panel/assets/{Row-lV_nLlFq.js → Row-Vu4j631i.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-Df21mCdF.js → RssFeed-C18B4xiy.js} +3 -3
- package/src/assets/web-panel/assets/{Search-8_Dz4qU9.js → Search-DxiqccE2.js} +1 -1
- package/src/assets/web-panel/assets/{Security-Cl5-PEcp.js → Security-Droe_hHI.js} +3 -3
- package/src/assets/web-panel/assets/{Services-C5qgCqA7.js → Services-CwmmyXzq.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-ASRgSh_Y.js → Skeleton-CrFs6rUL.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-DWx01ZJ7.js → Skills-Dp-d2miK.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-I2gbgtW8.js → Sla-2DFXVbK4.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-BqTikzfe.js → SpeechSettings-Cdd9lCoy.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-D3zCpBFV.js → SyncSettings-CxQhcYSk.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-DjMWII45.js → Tasks-BHWVRfXx.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-Cq7qDnHX.js → Templates-DNFk3a5_.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-DEasKDpQ.js → Tenant-B6X6dPo8.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-J6fLkTzi.js → Terminal-BuUNoLGM.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-CNvWrWN-.js → TimelineRenderer-DThrBYj8.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-BSgHJCKH.js → Tokens-CA_u4Blu.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-DgGU_D0o.js → Trigger-CXrW4Nry.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-BANlv-uB.js → Trust-DHcLpNy3.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-qh8GPRsU.js → UkeySign-B_fni4C2.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-DBiGTB4H.js → VideoEditing-g9nf2EhS.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-DMUFR7cL.js → Wallet-C8pOjIve.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-DP9nQQzW.js → WebAuthn-BaKNjxZt.js} +2 -2
- package/src/assets/web-panel/assets/{WorkflowEditor-DT_6jDkL.js → WorkflowEditor-CX030Wb1.js} +1 -1
- package/src/assets/web-panel/assets/{chat-C_kELmV6.js → chat-BpJsXlTK.js} +1 -1
- package/src/assets/web-panel/assets/{colors-DE-ZxAv_.js → colors-CUNg0-fh.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-BowulLDi.js → compact-item-C3tFHnhu.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-DCh8oMBQ.js → createContext-B8rTvO61.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-B4_IVU_n.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-Be7mK-iw.js → hasIn-CU6RIciB.js} +1 -1
- package/src/assets/web-panel/assets/index--6BUI55w.js +1 -0
- package/src/assets/web-panel/assets/{index-Ao-LXr-d.js → index-111hR8WZ.js} +1 -1
- package/src/assets/web-panel/assets/{index-4KkYmFy5.js → index-1L0tt7G2.js} +1 -1
- package/src/assets/web-panel/assets/index-5Q1bepcM.js +1 -0
- package/src/assets/web-panel/assets/{index-lN916819.js → index-6EwPIfXu.js} +1 -1
- package/src/assets/web-panel/assets/{index-Ck6MYKVN.js → index-B10Ia2KL.js} +1 -1
- package/src/assets/web-panel/assets/{index-C_VnSUjh.js → index-B1SLBLli.js} +1 -1
- package/src/assets/web-panel/assets/{index-DOebEvgn.js → index-B8_VQAav.js} +1 -1
- package/src/assets/web-panel/assets/{index-BdzVLz-c.js → index-BG4zuFf0.js} +1 -1
- package/src/assets/web-panel/assets/{index-DEDVYN7D.js → index-BJjEAoDb.js} +1 -1
- package/src/assets/web-panel/assets/{index-DSRKtgJg.js → index-BMuPJra-.js} +1 -1
- package/src/assets/web-panel/assets/{index-DSqZBvQM.js → index-BOCjph-k.js} +1 -1
- package/src/assets/web-panel/assets/{index-_cYsz4df.js → index-BOlAutGy.js} +1 -1
- package/src/assets/web-panel/assets/{index-nLHTuHoT.js → index-BPWJw4Ji.js} +1 -1
- package/src/assets/web-panel/assets/{index-C2pCquZC.js → index-BpBaOWmV.js} +1 -1
- package/src/assets/web-panel/assets/{index-DMKo49Um.js → index-BzhobTgZ.js} +1 -1
- package/src/assets/web-panel/assets/{index-BDIIR8g6.js → index-CDlHvQtw.js} +1 -1
- package/src/assets/web-panel/assets/{index-DLCzaLH4.js → index-CEIoRm_c.js} +1 -1
- package/src/assets/web-panel/assets/{index-D3lOYd9_.js → index-CLQjdKmE.js} +1 -1
- package/src/assets/web-panel/assets/{index-6OluUVJJ.js → index-CPF7Vqri.js} +1 -1
- package/src/assets/web-panel/assets/{index-CwJfLNqv.js → index-CPmgKQcl.js} +1 -1
- package/src/assets/web-panel/assets/{index-DbrQO1p9.js → index-CcpMHPWd.js} +1 -1
- package/src/assets/web-panel/assets/{index-B-3EDOlf.js → index-Cyksnofp.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cvy4vdVW.js → index-CyyhilXV.js} +1 -1
- package/src/assets/web-panel/assets/{index-3Ql7xQLn.js → index-D4njcYFw.js} +1 -1
- package/src/assets/web-panel/assets/{index-BlzMqaWB.js → index-Dc9pcin6.js} +1 -1
- package/src/assets/web-panel/assets/{index-DMDaGPxG.js → index-DfAC55QA.js} +1 -1
- package/src/assets/web-panel/assets/{index-CKmC6ugN.js → index-DgNCfwvg.js} +1 -1
- package/src/assets/web-panel/assets/{index-DN1AT3FH.js → index-DvfhIBNZ.js} +1 -1
- package/src/assets/web-panel/assets/{index-CL2hAUWh.js → index-Hbzd9WeI.js} +1 -1
- package/src/assets/web-panel/assets/{index-DPX3N4T8.js → index-IiS7WoUl.js} +1 -1
- package/src/assets/web-panel/assets/{index-CXvy8HrM.js → index-K2Uqqkr1.js} +1 -1
- package/src/assets/web-panel/assets/{index-DjC2TJeH.js → index-KgR1f2Gq.js} +1 -1
- package/src/assets/web-panel/assets/{index-OH54KMLN.js → index-X6e0cGRU.js} +1 -1
- package/src/assets/web-panel/assets/{index-CecGCLWI.js → index-Xa6TlaD7.js} +1 -1
- package/src/assets/web-panel/assets/{index-BwY31W-u.js → index-YczWc2_0.js} +1 -1
- package/src/assets/web-panel/assets/{index-CUXfwAhF.js → index-h_ANnbR8.js} +1 -1
- package/src/assets/web-panel/assets/{index-Qx8cTReg.js → index-k7QsBwyo.js} +3 -3
- package/src/assets/web-panel/assets/{index-LVrxqU88.js → index-lo9rgpyj.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-BNhziAal.js → initDefaultProps-FI8D7E2x.js} +1 -1
- package/src/assets/web-panel/assets/{motion-fUkbJz38.js → motion-B1hpJYSD.js} +1 -1
- package/src/assets/web-panel/assets/{move-rFx211Cl.js → move-Vl1vUReW.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-CEP1wN3R.js → mtc-parser-6Cu2aFME.js} +1 -1
- package/src/assets/web-panel/assets/{omit-DacHd_Zm.js → omit-VRKL8iSO.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-Dqp58Ep2.js → pickAttrs-DZfWsOe0.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-Cv6Rm0pV.js → placementArrow-qmcOUc4W.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-rNE0p9ZW.js → responsiveObserve-BLB6SsSw.js} +1 -1
- package/src/assets/web-panel/assets/{slide-C97JxD4S.js → slide-41jdYeSH.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-Cxk1gV9M.js → statusUtils-Yn8OQ5ey.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-CbtKKsPo.js → styleChecker-4CEwz9Zd.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-CQATs2JQ.js → useFlexGapSupport-BClv53kR.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-6c7qrpE_.js → useFs-Bugo8HuF.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-OjxtBGe7.js → usePersonalDataHub-B-q2ElB0.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-CSlXfUSh.js → vnode-ejVeFJ0x.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-Cc1qKiSZ.js → zoom-DM1y_KKP.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/constants.js +1 -1
- package/src/data/changelog.json +14 -1
- package/src/lib/goal-assess.js +4 -1
- package/src/lib/goal-check-evidence.js +77 -9
- package/src/lib/goal-model-call.js +107 -0
- package/src/lib/goal-workspace-evidence.js +299 -0
- package/src/lib/llm-onboarding-catalog.json +1 -1
- package/src/lib/llm-providers.js +1 -0
- package/src/lib/task-model-selector.js +1 -1
- package/src/runtime/agent-core.js +27 -1
- package/src/runtime/headless-runner.js +201 -107
- package/src/assets/web-panel/assets/OrderTableRenderer-OdeXEGAn.js +0 -1
- package/src/assets/web-panel/assets/devWarning-BVvJAp91.js +0 -1
- package/src/assets/web-panel/assets/index-B7IhCfsh.js +0 -1
- package/src/assets/web-panel/assets/index-BMrbe_Ey.js +0 -1
|
@@ -245,7 +245,11 @@ import {
|
|
|
245
245
|
runtimeUsageEventType,
|
|
246
246
|
runtimeToolCallId,
|
|
247
247
|
} from "../lib/runtime-usage-ledger.js";
|
|
248
|
-
import {
|
|
248
|
+
import {
|
|
249
|
+
goalModelCallError,
|
|
250
|
+
runGoalModelCall,
|
|
251
|
+
} from "../lib/goal-model-call.js";
|
|
252
|
+
import { captureGoalWorkspace } from "../lib/goal-workspace-evidence.js";
|
|
249
253
|
import {
|
|
250
254
|
GoalCheckEvidence,
|
|
251
255
|
buildGoalJudgePrompt,
|
|
@@ -3380,6 +3384,52 @@ async function runAgentHeadlessInWorkspace(
|
|
|
3380
3384
|
};
|
|
3381
3385
|
};
|
|
3382
3386
|
|
|
3387
|
+
const recordRunUsage = (event) => {
|
|
3388
|
+
if (!event.attribution) {
|
|
3389
|
+
usage.input_tokens += event.usage?.input_tokens || 0;
|
|
3390
|
+
usage.output_tokens += event.usage?.output_tokens || 0;
|
|
3391
|
+
// Carry prompt-cache tokens into accumulated usage (cost accuracy).
|
|
3392
|
+
usage.cache_read_input_tokens +=
|
|
3393
|
+
event.usage?.cache_read_input_tokens || 0;
|
|
3394
|
+
usage.cache_creation_input_tokens +=
|
|
3395
|
+
event.usage?.cache_creation_input_tokens || 0;
|
|
3396
|
+
}
|
|
3397
|
+
emitStream({
|
|
3398
|
+
type: "token_usage",
|
|
3399
|
+
provider: event.provider,
|
|
3400
|
+
model: event.model,
|
|
3401
|
+
usage: event.usage,
|
|
3402
|
+
...(event.contextWindow ? { contextWindow: event.contextWindow } : {}),
|
|
3403
|
+
...(event.attribution ? { attribution: event.attribution } : {}),
|
|
3404
|
+
...(event.source ? { source: event.source } : {}),
|
|
3405
|
+
});
|
|
3406
|
+
if (costBudget) {
|
|
3407
|
+
costBudget.add({
|
|
3408
|
+
provider: event.provider,
|
|
3409
|
+
model: event.model,
|
|
3410
|
+
usage: event.usage,
|
|
3411
|
+
});
|
|
3412
|
+
if (costBudget.shouldWarnInactive()) {
|
|
3413
|
+
const m = `cost cap $${options.maxCostUsd} set but model "${event.model}" is unpriced/free — cap inactive`;
|
|
3414
|
+
if (isText) writeErr(` ${m}\n`);
|
|
3415
|
+
emitStream({ type: "cost_warning", message: m });
|
|
3416
|
+
}
|
|
3417
|
+
if (costBudget.exceeded()) {
|
|
3418
|
+
endReason = "cost-budget-exhausted";
|
|
3419
|
+
stopForCost = true;
|
|
3420
|
+
if (isText)
|
|
3421
|
+
writeErr(
|
|
3422
|
+
` ⛔ cost budget $${options.maxCostUsd} reached (spent ≈$${costBudget.spentUsd}) — stopping\n`,
|
|
3423
|
+
);
|
|
3424
|
+
emitStream({
|
|
3425
|
+
type: "cost_budget_exhausted",
|
|
3426
|
+
limit_usd: options.maxCostUsd,
|
|
3427
|
+
spent_usd: costBudget.spentUsd,
|
|
3428
|
+
});
|
|
3429
|
+
}
|
|
3430
|
+
}
|
|
3431
|
+
};
|
|
3432
|
+
|
|
3383
3433
|
// --goal-condition: session-level completion-condition engine (P1). After each
|
|
3384
3434
|
// outer turn an independent checker judges a completion CONDITION; if unmet and
|
|
3385
3435
|
// budget remains, a follow-up user turn re-drives the agent — until met
|
|
@@ -3390,6 +3440,51 @@ async function runAgentHeadlessInWorkspace(
|
|
|
3390
3440
|
let _goalHelpers = null;
|
|
3391
3441
|
let _goalTokensSeen = 0; // per-turn usage deltas (engine totals == run total)
|
|
3392
3442
|
let _goalCostSeen = 0;
|
|
3443
|
+
const recordGoalUsage = () => {
|
|
3444
|
+
if (!goalEngine) return;
|
|
3445
|
+
const tokens =
|
|
3446
|
+
usage.input_tokens +
|
|
3447
|
+
usage.output_tokens +
|
|
3448
|
+
usage.cache_read_input_tokens +
|
|
3449
|
+
usage.cache_creation_input_tokens;
|
|
3450
|
+
goalEngine.recordTurnUsage({
|
|
3451
|
+
tokens: tokens - _goalTokensSeen,
|
|
3452
|
+
costUsd: costBudget.spentUsd - _goalCostSeen,
|
|
3453
|
+
});
|
|
3454
|
+
_goalTokensSeen = tokens;
|
|
3455
|
+
_goalCostSeen = costBudget.spentUsd;
|
|
3456
|
+
};
|
|
3457
|
+
const callGoalModel = async (prompt, operationId) => {
|
|
3458
|
+
const { chatWithTools } = await import("./agent-core.js");
|
|
3459
|
+
try {
|
|
3460
|
+
return await runGoalModelCall({
|
|
3461
|
+
sessionId: resolveHeadlessMeteredSessionId(persist, sessionId),
|
|
3462
|
+
persist: persist
|
|
3463
|
+
? (type, data) => store.appendEvent(sessionId, type, data)
|
|
3464
|
+
: null,
|
|
3465
|
+
sessionBudget: options.sessionBudget || null,
|
|
3466
|
+
iterationBudget: budget,
|
|
3467
|
+
costBudget,
|
|
3468
|
+
signal: options.signal,
|
|
3469
|
+
operationId,
|
|
3470
|
+
prompt,
|
|
3471
|
+
chat: chatWithTools,
|
|
3472
|
+
chatOptions: {
|
|
3473
|
+
...(evolutionIngress === null ? {} : { evolutionIngress }),
|
|
3474
|
+
model,
|
|
3475
|
+
provider,
|
|
3476
|
+
baseUrl,
|
|
3477
|
+
apiKey,
|
|
3478
|
+
serviceTier: options.serviceTier,
|
|
3479
|
+
maxOutputTokens: options.maxOutputTokens,
|
|
3480
|
+
},
|
|
3481
|
+
onUsage: recordRunUsage,
|
|
3482
|
+
});
|
|
3483
|
+
} finally {
|
|
3484
|
+
// Include auxiliary usage before the completion decision and checkpoint.
|
|
3485
|
+
recordGoalUsage();
|
|
3486
|
+
}
|
|
3487
|
+
};
|
|
3393
3488
|
let goalSetupFailure = null;
|
|
3394
3489
|
let goalRecoveryReviewed = false;
|
|
3395
3490
|
const goalEvidence = options.goalCondition
|
|
@@ -3398,36 +3493,47 @@ async function runAgentHeadlessInWorkspace(
|
|
|
3398
3493
|
// Model-judged conditions reuse the run's own model as an independent
|
|
3399
3494
|
// evaluator (mirrors --goal-assess). Overridable via deps for tests.
|
|
3400
3495
|
const _defaultGoalJudge = async (cond, transcript) => {
|
|
3496
|
+
const checkCancellation = () => {
|
|
3497
|
+
if (options.signal?.aborted || options.sessionBudget?.signal?.aborted)
|
|
3498
|
+
throw goalModelCallError("cancelled");
|
|
3499
|
+
};
|
|
3500
|
+
checkCancellation();
|
|
3501
|
+
const goalBudget = goalEngine?.budget;
|
|
3502
|
+
const goalState = goalEngine?.state;
|
|
3503
|
+
if (
|
|
3504
|
+
goalBudget &&
|
|
3505
|
+
((goalBudget.maxTokens != null &&
|
|
3506
|
+
goalState.tokens >= goalBudget.maxTokens) ||
|
|
3507
|
+
(goalBudget.maxCostUsd != null &&
|
|
3508
|
+
goalState.costUsd >= goalBudget.maxCostUsd) ||
|
|
3509
|
+
(goalBudget.maxTimeMs != null &&
|
|
3510
|
+
(deps.now ? deps.now() : Date.now()) - goalState.startedAtMs >=
|
|
3511
|
+
goalBudget.maxTimeMs))
|
|
3512
|
+
) {
|
|
3513
|
+
return {
|
|
3514
|
+
met: false,
|
|
3515
|
+
reason: "Goal budget exhausted before model evaluation",
|
|
3516
|
+
};
|
|
3517
|
+
}
|
|
3401
3518
|
if (!usableGoalEvidence(transcript.goalEvidence).length) {
|
|
3519
|
+
const bindingReasons = [
|
|
3520
|
+
...new Set(
|
|
3521
|
+
(transcript.goalEvidence?.tools || [])
|
|
3522
|
+
.map((record) => record.workspace?.reason)
|
|
3523
|
+
.filter(Boolean),
|
|
3524
|
+
),
|
|
3525
|
+
];
|
|
3402
3526
|
return {
|
|
3403
3527
|
met: false,
|
|
3404
|
-
reason:
|
|
3405
|
-
|
|
3528
|
+
reason: bindingReasons.length
|
|
3529
|
+
? `Goal workspace evidence unavailable (${bindingReasons.join(", ")}); run a fresh artifact read or explicit check`
|
|
3530
|
+
: "No current successful tool evidence; run an explicit check for the goal condition",
|
|
3406
3531
|
evidence: { kind: "model", source: "current-turn-tools", toolIds: [] },
|
|
3407
3532
|
};
|
|
3408
3533
|
}
|
|
3409
|
-
const { chatWithTools } = await import("./agent-core.js");
|
|
3410
3534
|
const { firstBalancedJson } = await import("../lib/json-schema-output.js");
|
|
3411
3535
|
const judgePrompt = buildGoalJudgePrompt(cond, transcript);
|
|
3412
|
-
const r = await
|
|
3413
|
-
sessionId: resolveHeadlessMeteredSessionId(persist, sessionId),
|
|
3414
|
-
persist: persist
|
|
3415
|
-
? (type, data) => store.appendEvent(sessionId, type, data)
|
|
3416
|
-
: null,
|
|
3417
|
-
provider,
|
|
3418
|
-
model,
|
|
3419
|
-
source: "model",
|
|
3420
|
-
sessionBudget: options.sessionBudget || null,
|
|
3421
|
-
call: () =>
|
|
3422
|
-
chatWithTools([{ role: "user", content: judgePrompt }], {
|
|
3423
|
-
...(evolutionIngress === null ? {} : { evolutionIngress }),
|
|
3424
|
-
model,
|
|
3425
|
-
provider,
|
|
3426
|
-
baseUrl,
|
|
3427
|
-
apiKey,
|
|
3428
|
-
enabledToolNames: [],
|
|
3429
|
-
}),
|
|
3430
|
-
});
|
|
3536
|
+
const r = await callGoalModel(judgePrompt, "goal-condition");
|
|
3431
3537
|
const text = r?.message?.content || "";
|
|
3432
3538
|
let verdict = null;
|
|
3433
3539
|
const block = firstBalancedJson(text, "{");
|
|
@@ -3438,16 +3544,25 @@ async function runAgentHeadlessInWorkspace(
|
|
|
3438
3544
|
/* tolerant: a non-JSON verdict stays unmet */
|
|
3439
3545
|
}
|
|
3440
3546
|
}
|
|
3441
|
-
|
|
3547
|
+
// A user or background writer can change files while the model evaluates.
|
|
3548
|
+
// Re-read the bound inputs before accepting its cited observations.
|
|
3549
|
+
await goalEvidence.refreshWorkspace();
|
|
3550
|
+
checkCancellation();
|
|
3551
|
+
return validateGoalJudgeVerdict(verdict, goalEvidence.snapshot());
|
|
3442
3552
|
};
|
|
3443
3553
|
// A running checkpoint precedes model/tool effects; an evaluated checkpoint
|
|
3444
3554
|
// precedes publishing the decision. An interrupted running phase requires
|
|
3445
3555
|
// reconciliation on resume instead of silently replaying the old goal state.
|
|
3446
|
-
const persistGoalSnapshot = (
|
|
3556
|
+
const persistGoalSnapshot = (
|
|
3557
|
+
phase,
|
|
3558
|
+
failurePhase = "after-model",
|
|
3559
|
+
evaluation = null,
|
|
3560
|
+
) => {
|
|
3447
3561
|
if (!persist || !goalEngine) return;
|
|
3448
3562
|
try {
|
|
3449
3563
|
store.appendEvent(sessionId, "goal_snapshot", {
|
|
3450
3564
|
...goalEngine.snapshot(),
|
|
3565
|
+
...(evaluation ? { evaluation } : {}),
|
|
3451
3566
|
checkpoint: {
|
|
3452
3567
|
schema: "chainlesschain.goal-checkpoint/v1",
|
|
3453
3568
|
phase,
|
|
@@ -3520,6 +3635,15 @@ async function runAgentHeadlessInWorkspace(
|
|
|
3520
3635
|
now: goalNow,
|
|
3521
3636
|
});
|
|
3522
3637
|
}
|
|
3638
|
+
if (goalEngine.condition.kind === "model" && !deps.goalConditionJudge) {
|
|
3639
|
+
const signals = [options.signal, options.sessionBudget?.signal].filter(
|
|
3640
|
+
Boolean,
|
|
3641
|
+
);
|
|
3642
|
+
const signal =
|
|
3643
|
+
signals.length > 1 ? AbortSignal.any(signals) : signals[0];
|
|
3644
|
+
goalEvidence.captureWorkspace = (call) =>
|
|
3645
|
+
captureGoalWorkspace(cwd, call, { signal });
|
|
3646
|
+
}
|
|
3523
3647
|
_goalHelpers = {
|
|
3524
3648
|
isDeterministicCondition: eng.isDeterministicCondition,
|
|
3525
3649
|
runDeterministicCheck: eng.runDeterministicCheck,
|
|
@@ -3650,7 +3774,7 @@ async function runAgentHeadlessInWorkspace(
|
|
|
3650
3774
|
args: event.args,
|
|
3651
3775
|
};
|
|
3652
3776
|
toolCalls.push(toolCall);
|
|
3653
|
-
goalEvidence?.started(toolCall);
|
|
3777
|
+
await goalEvidence?.started(toolCall);
|
|
3654
3778
|
toolStartedAt.set(
|
|
3655
3779
|
telemetryToolId,
|
|
3656
3780
|
deps.now ? deps.now() : Date.now(),
|
|
@@ -3778,7 +3902,11 @@ async function runAgentHeadlessInWorkspace(
|
|
|
3778
3902
|
if (policyEvent) emitStream(policyEvent);
|
|
3779
3903
|
}
|
|
3780
3904
|
if (settledCall) {
|
|
3781
|
-
goalEvidence?.settled(
|
|
3905
|
+
await goalEvidence?.settled(
|
|
3906
|
+
settledCall,
|
|
3907
|
+
event.result,
|
|
3908
|
+
Boolean(err),
|
|
3909
|
+
);
|
|
3782
3910
|
settledCall.is_error = Boolean(err);
|
|
3783
3911
|
settledCall.durationMs =
|
|
3784
3912
|
event.result?.toolTelemetryRecord?.durationMs ??
|
|
@@ -3921,51 +4049,7 @@ async function runAgentHeadlessInWorkspace(
|
|
|
3921
4049
|
event,
|
|
3922
4050
|
"headless usage settlement",
|
|
3923
4051
|
);
|
|
3924
|
-
|
|
3925
|
-
usage.input_tokens += event.usage?.input_tokens || 0;
|
|
3926
|
-
usage.output_tokens += event.usage?.output_tokens || 0;
|
|
3927
|
-
// Carry prompt-cache tokens into accumulated usage (cost accuracy).
|
|
3928
|
-
usage.cache_read_input_tokens +=
|
|
3929
|
-
event.usage?.cache_read_input_tokens || 0;
|
|
3930
|
-
usage.cache_creation_input_tokens +=
|
|
3931
|
-
event.usage?.cache_creation_input_tokens || 0;
|
|
3932
|
-
}
|
|
3933
|
-
emitStream({
|
|
3934
|
-
type: "token_usage",
|
|
3935
|
-
provider: event.provider,
|
|
3936
|
-
model: event.model,
|
|
3937
|
-
usage: event.usage,
|
|
3938
|
-
...(event.contextWindow
|
|
3939
|
-
? { contextWindow: event.contextWindow }
|
|
3940
|
-
: {}),
|
|
3941
|
-
...(event.attribution ? { attribution: event.attribution } : {}),
|
|
3942
|
-
...(event.source ? { source: event.source } : {}),
|
|
3943
|
-
});
|
|
3944
|
-
if (costBudget) {
|
|
3945
|
-
costBudget.add({
|
|
3946
|
-
provider: event.provider,
|
|
3947
|
-
model: event.model,
|
|
3948
|
-
usage: event.usage,
|
|
3949
|
-
});
|
|
3950
|
-
if (costBudget.shouldWarnInactive()) {
|
|
3951
|
-
const m = `cost cap $${options.maxCostUsd} set but model "${event.model}" is unpriced/free — cap inactive`;
|
|
3952
|
-
if (isText) writeErr(` ${m}\n`);
|
|
3953
|
-
emitStream({ type: "cost_warning", message: m });
|
|
3954
|
-
}
|
|
3955
|
-
if (costBudget.exceeded()) {
|
|
3956
|
-
endReason = "cost-budget-exhausted";
|
|
3957
|
-
stopForCost = true;
|
|
3958
|
-
if (isText)
|
|
3959
|
-
writeErr(
|
|
3960
|
-
` ⛔ cost budget $${options.maxCostUsd} reached (spent ≈$${costBudget.spentUsd}) — stopping\n`,
|
|
3961
|
-
);
|
|
3962
|
-
emitStream({
|
|
3963
|
-
type: "cost_budget_exhausted",
|
|
3964
|
-
limit_usd: options.maxCostUsd,
|
|
3965
|
-
spent_usd: costBudget.spentUsd,
|
|
3966
|
-
});
|
|
3967
|
-
}
|
|
3968
|
-
}
|
|
4052
|
+
recordRunUsage(event);
|
|
3969
4053
|
break;
|
|
3970
4054
|
}
|
|
3971
4055
|
case "iteration-warning": {
|
|
@@ -4095,18 +4179,7 @@ async function runAgentHeadlessInWorkspace(
|
|
|
4095
4179
|
) {
|
|
4096
4180
|
// Feed this turn's usage DELTA so the engine's totals equal the run's
|
|
4097
4181
|
// cumulative usage (recordTurnUsage accumulates).
|
|
4098
|
-
|
|
4099
|
-
usage.input_tokens +
|
|
4100
|
-
usage.output_tokens +
|
|
4101
|
-
usage.cache_read_input_tokens +
|
|
4102
|
-
usage.cache_creation_input_tokens;
|
|
4103
|
-
const curCost = costBudget ? Number(costBudget.spentUsd) || 0 : 0;
|
|
4104
|
-
goalEngine.recordTurnUsage({
|
|
4105
|
-
tokens: curTokens - _goalTokensSeen,
|
|
4106
|
-
costUsd: curCost - _goalCostSeen,
|
|
4107
|
-
});
|
|
4108
|
-
_goalTokensSeen = curTokens;
|
|
4109
|
-
_goalCostSeen = curCost;
|
|
4182
|
+
recordGoalUsage();
|
|
4110
4183
|
|
|
4111
4184
|
const cond = goalEngine.condition;
|
|
4112
4185
|
let evaluation;
|
|
@@ -4131,6 +4204,7 @@ async function runAgentHeadlessInWorkspace(
|
|
|
4131
4204
|
throw error;
|
|
4132
4205
|
}
|
|
4133
4206
|
const judge = deps.goalConditionJudge || _defaultGoalJudge;
|
|
4207
|
+
await goalEvidence.refreshWorkspace();
|
|
4134
4208
|
evaluation = await judge(cond, {
|
|
4135
4209
|
prompt: options.prompt,
|
|
4136
4210
|
finalText,
|
|
@@ -4140,6 +4214,12 @@ async function runAgentHeadlessInWorkspace(
|
|
|
4140
4214
|
}
|
|
4141
4215
|
} catch (err) {
|
|
4142
4216
|
if (err?.runtimeLedgerPersistence === true) throw err;
|
|
4217
|
+
if (
|
|
4218
|
+
err?.goalModelFailure ||
|
|
4219
|
+
(typeof err?.code === "string" &&
|
|
4220
|
+
err.code.startsWith("CC_SESSION_BUDGET_"))
|
|
4221
|
+
)
|
|
4222
|
+
throw err;
|
|
4143
4223
|
if (err?.code === "CC_AGENT_EVOLUTION_INGRESS_FAILED") throw err;
|
|
4144
4224
|
evaluation = {
|
|
4145
4225
|
met: false,
|
|
@@ -4150,7 +4230,7 @@ async function runAgentHeadlessInWorkspace(
|
|
|
4150
4230
|
|
|
4151
4231
|
const { decision, events } = goalEngine.evaluate(evaluation);
|
|
4152
4232
|
// Publish only after the decision and accumulated usage are durable.
|
|
4153
|
-
persistGoalSnapshot("evaluated");
|
|
4233
|
+
persistGoalSnapshot("evaluated", "after-model", evaluation);
|
|
4154
4234
|
for (const ev of events) {
|
|
4155
4235
|
emitStream(ev);
|
|
4156
4236
|
if (isText) {
|
|
@@ -4167,6 +4247,10 @@ async function runAgentHeadlessInWorkspace(
|
|
|
4167
4247
|
}
|
|
4168
4248
|
}
|
|
4169
4249
|
if (decision === _goalHelpers.GOAL_DECISION.CONTINUE) {
|
|
4250
|
+
if (budget.isExhausted()) {
|
|
4251
|
+
endReason = "max_turns";
|
|
4252
|
+
break;
|
|
4253
|
+
}
|
|
4170
4254
|
messages.push(
|
|
4171
4255
|
markRuntimeOnlySessionMessage({
|
|
4172
4256
|
role: "user",
|
|
@@ -4232,7 +4316,9 @@ async function runAgentHeadlessInWorkspace(
|
|
|
4232
4316
|
? "error_persistence"
|
|
4233
4317
|
: sessionBudgetFailed
|
|
4234
4318
|
? "error_session_budget"
|
|
4235
|
-
:
|
|
4319
|
+
: err?.goalModelFailure
|
|
4320
|
+
? err.subtype
|
|
4321
|
+
: "error";
|
|
4236
4322
|
const transportDetails =
|
|
4237
4323
|
errorSubtype === "error" ? transportErrorDetails(err) : undefined;
|
|
4238
4324
|
const diagnosticFields = transportDetails
|
|
@@ -4247,6 +4333,13 @@ async function runAgentHeadlessInWorkspace(
|
|
|
4247
4333
|
subtype: errorSubtype,
|
|
4248
4334
|
is_error: true,
|
|
4249
4335
|
error: message,
|
|
4336
|
+
...(err?.goalModelFailure
|
|
4337
|
+
? {
|
|
4338
|
+
usage,
|
|
4339
|
+
total_cost_usd: costBudget.spentUsd,
|
|
4340
|
+
num_turns: budget.consumed,
|
|
4341
|
+
}
|
|
4342
|
+
: {}),
|
|
4250
4343
|
...diagnosticFields,
|
|
4251
4344
|
});
|
|
4252
4345
|
} else if (isJson) {
|
|
@@ -4259,6 +4352,7 @@ async function runAgentHeadlessInWorkspace(
|
|
|
4259
4352
|
sessionId,
|
|
4260
4353
|
toolCalls,
|
|
4261
4354
|
usage,
|
|
4355
|
+
totalCostUsd: costBudget.spentUsd,
|
|
4262
4356
|
numTurns: budget.consumed,
|
|
4263
4357
|
durationMs: (deps.now ? deps.now() : Date.now()) - startedAt,
|
|
4264
4358
|
denials,
|
|
@@ -4274,7 +4368,11 @@ async function runAgentHeadlessInWorkspace(
|
|
|
4274
4368
|
// "the model call failed" from "the run itself errored" (1).
|
|
4275
4369
|
loopFailureOutcome = {
|
|
4276
4370
|
exitCode:
|
|
4277
|
-
persistenceFailed || sessionBudgetFailed
|
|
4371
|
+
persistenceFailed || sessionBudgetFailed
|
|
4372
|
+
? 1
|
|
4373
|
+
: err?.goalModelFailure
|
|
4374
|
+
? exitCodeForEndReason(err.endReason, true)
|
|
4375
|
+
: classifyLoopError(err),
|
|
4278
4376
|
result: message,
|
|
4279
4377
|
isError: true,
|
|
4280
4378
|
...(persistence ? { persistence } : {}),
|
|
@@ -4538,26 +4636,7 @@ async function runAgentHeadlessInWorkspace(
|
|
|
4538
4636
|
const assessChat =
|
|
4539
4637
|
deps.assessChat ||
|
|
4540
4638
|
(async (assessPrompt) => {
|
|
4541
|
-
const
|
|
4542
|
-
const r = await runMeteredDirectModelCall({
|
|
4543
|
-
sessionId: resolveHeadlessMeteredSessionId(persist, sessionId),
|
|
4544
|
-
persist: persist
|
|
4545
|
-
? (type, data) => store.appendEvent(sessionId, type, data)
|
|
4546
|
-
: null,
|
|
4547
|
-
provider,
|
|
4548
|
-
model,
|
|
4549
|
-
source: "model",
|
|
4550
|
-
sessionBudget: options.sessionBudget || null,
|
|
4551
|
-
call: () =>
|
|
4552
|
-
chatWithTools([{ role: "user", content: assessPrompt }], {
|
|
4553
|
-
...(evolutionIngress === null ? {} : { evolutionIngress }),
|
|
4554
|
-
model,
|
|
4555
|
-
provider,
|
|
4556
|
-
baseUrl,
|
|
4557
|
-
apiKey,
|
|
4558
|
-
enabledToolNames: [],
|
|
4559
|
-
}),
|
|
4560
|
-
});
|
|
4639
|
+
const r = await callGoalModel(assessPrompt, "goal-assessment");
|
|
4561
4640
|
return r?.message?.content || "";
|
|
4562
4641
|
});
|
|
4563
4642
|
const { assessment } = await doAssess({
|
|
@@ -4585,6 +4664,21 @@ async function runAgentHeadlessInWorkspace(
|
|
|
4585
4664
|
}
|
|
4586
4665
|
}
|
|
4587
4666
|
} catch (error) {
|
|
4667
|
+
if (error?.goalModelFailure) {
|
|
4668
|
+
isError = true;
|
|
4669
|
+
subtype = error.subtype;
|
|
4670
|
+
endReason = error.endReason;
|
|
4671
|
+
finalText = error.message;
|
|
4672
|
+
}
|
|
4673
|
+
if (
|
|
4674
|
+
typeof error?.code === "string" &&
|
|
4675
|
+
error.code.startsWith("CC_SESSION_BUDGET_")
|
|
4676
|
+
) {
|
|
4677
|
+
isError = true;
|
|
4678
|
+
subtype = "error_session_budget";
|
|
4679
|
+
endReason = "session-budget-exhausted";
|
|
4680
|
+
finalText = error.message;
|
|
4681
|
+
}
|
|
4588
4682
|
if (error?.runtimeLedgerPersistence === true) {
|
|
4589
4683
|
isError = true;
|
|
4590
4684
|
subtype = "error_persistence";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as w,P as l,J as u,U as s,R as n,c as i,K as v,Q as _,V as g,b as o}from"./vendor-Bn1JzzAn.js";import{_ as S}from"./index-Qx8cTReg.js";import"./icons-DG5UD-6K.js";const k={__name:"OrderTableRenderer",props:{event:{type:Object,required:!0}},setup(p,{expose:r}){r();const a=p,e=o(()=>a.event.content||{}),d=o(()=>a.event.extra||{}),m=o(()=>d.value.merchant||e.value.merchant||e.value.counterparty||"—"),c=o(()=>e.value.title||e.value.name||e.value.itemName||e.value.text||"—"),y=o(()=>{const t=e.value.amount??e.value.price??e.value.total;return t==null?"—":`${e.value.currency||"¥"} ${typeof t=="number"?t.toFixed(2):t}`}),T=o(()=>d.value.orderNo||e.value.orderNo||e.value.orderId),f=o(()=>e.value.status||e.value.state),b=o(()=>{const t=(f.value||"").toLowerCase();return t.includes("成功")||t.includes("succe")||t.includes("paid")?"green":t.includes("退")||t.includes("refund")?"orange":t.includes("失败")||t.includes("fail")?"red":"default"}),h=o(()=>{if(!a.event.occurredAt)return"";const t=new Date(a.event.occurredAt);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")} ${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}`}),x={props:a,c:e,e:d,merchantText:m,itemText:c,amountText:y,orderNo:T,statusText:f,statusColor:b,formattedTime:h,computed:o};return Object.defineProperty(x,"__isScriptSetup",{enumerable:!1,value:!0}),x}},N={class:"order-card"},C={class:"head"},O={class:"time"},V={class:"row"},R={class:"val"},B={class:"row"},D={class:"val"},I={class:"row amount-row"},j={class:"val amount"},A={key:0,class:"row"},F={class:"val mono"},M={key:1,class:"row"};function P(p,r,a,e,d,m){const c=w("a-tag");return l(),u("div",N,[s("div",C,[s("span",O,n(e.formattedTime),1),i(c,{color:"gold"},{default:v(()=>[_(n(a.event.source.adapter),1)]),_:1}),i(c,null,{default:v(()=>[_(n(a.event.subtype),1)]),_:1})]),s("div",V,[r[0]||(r[0]=s("span",{class:"key"},"商户",-1)),s("span",R,n(e.merchantText),1)]),s("div",B,[r[1]||(r[1]=s("span",{class:"key"},"商品/项目",-1)),s("span",D,n(e.itemText),1)]),s("div",I,[r[2]||(r[2]=s("span",{class:"key"},"金额",-1)),s("span",j,n(e.amountText),1)]),e.orderNo?(l(),u("div",A,[r[3]||(r[3]=s("span",{class:"key"},"单号",-1)),s("span",F,n(e.orderNo),1)])):g("v-if",!0),e.statusText?(l(),u("div",M,[r[4]||(r[4]=s("span",{class:"key"},"状态",-1)),i(c,{color:e.statusColor},{default:v(()=>[_(n(e.statusText),1)]),_:1},8,["color"])])):g("v-if",!0)])}const K=S(k,[["render",P],["__scopeId","data-v-5ed5524d"],["__file","/tmp/cc-web-panel-nob91t/repo/packages/web-panel/src/components/pdh/renderers/OrderTableRenderer.vue"]]);export{K as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Q as r}from"./index-Qx8cTReg.js";const o=((n,a,e)=>{r(n,`[ant-design-vue: ${a}] ${e}`)});export{o as d};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{A as o}from"./Row-lV_nLlFq.js";import{a0 as t}from"./index-Qx8cTReg.js";import"./vendor-Bn1JzzAn.js";import"./responsiveObserve-rNE0p9ZW.js";import"./useFlexGapSupport-CQATs2JQ.js";import"./styleChecker-CbtKKsPo.js";import"./index-OH54KMLN.js";import"./icons-DG5UD-6K.js";const l=t(o);export{l as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{C as o}from"./Col-i0owJaGP.js";import{a0 as t}from"./index-Qx8cTReg.js";import"./vendor-Bn1JzzAn.js";import"./index-OH54KMLN.js";import"./icons-DG5UD-6K.js";const s=t(o);export{s as default};
|