chainlesschain 0.166.91 → 0.166.93
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 +17 -17
- package/package.json +3 -3
- 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-DgV7xb8F.js → AIOps-oo9rE0gh.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-CgANpkKu.js → ActionButton-CVJVVv4i.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-DnvpX7RB.js → Analytics-CUXuwmia.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-C2bHccBM.js → AppLayout-iM4PvCuY.js} +5 -5
- package/src/assets/web-panel/assets/{Artifacts-BIhijC9g.js → Artifacts-DKUIJbf9.js} +1 -1
- package/src/assets/web-panel/assets/{Audit-CKRjWGdp.js → Audit-C4_SzFN2.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-CblYtgBE.js → BackgroundAgents-C3427uy-.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-Cq35b78a.js → Backup-BpEQQiog.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-DcB7NoRz.js → BaseInput-C_exQomZ.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-tc3b-s7i.js → Chat-DzpkLtWa.js} +5 -5
- package/src/assets/web-panel/assets/ChatBubbleRenderer-DX4XmTWm.js +1 -0
- package/src/assets/web-panel/assets/{Checkbox-BLD5bH5u.js → Checkbox-CxAC1CU8.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-BLOsoazN.js → Codegen-wDFAGCLp.js} +1 -1
- package/src/assets/web-panel/assets/{Col-Bdr7JwIx.js → Col-BvwirhMf.js} +1 -1
- package/src/assets/web-panel/assets/{Community-C84BsWE0.js → Community-BJuA7paY.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-Dzdwd04z.js → Compact-DzV35_u2.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-CCG-R0EV.js → Compliance-CIDPPvr9.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-BYj72SK0.js → Cowork-DyTMxP3N.js} +3 -3
- package/src/assets/web-panel/assets/{Cron-B6iKAwOf.js → Cron-PcNLjMFx.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-BJ-oDC6u.js → Crosschain-B_O7ck6Z.js} +1 -1
- package/src/assets/web-panel/assets/{DID-BnMckGLr.js → DID-CII35Me1.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-Cyje-gCO.js → Dashboard-DU56fkNz.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-BpNlenjK.js → Dropdown-DHC8HVeJ.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-BhonO7Nv.js → EmailListRenderer-oUOHFNsD.js} +1 -1
- package/src/assets/web-panel/assets/{EvolutionSettings-DVoNU-Id.js → EvolutionSettings-D7RCAWNl.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-tdn-KC67.js → FamilyGuardDashboard-CGONPZxC.js} +1 -1
- package/src/assets/web-panel/assets/{Federation--EEVrHhz.js → Federation-BbDlPWcl.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-Cy8zr0-4.js → FormItemContext-BBJbFQQT.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-BuUhpgFi.js → GenericCardRenderer-iuxAero4.js} +1 -1
- package/src/assets/web-panel/assets/{Git-Ctd3E5Pe.js → Git-Dw0prdY5.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-Ce7dV6aU.js → Governance-DOGqi_uV.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-CD1vExIH.js → Inference-BY5oUGGj.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-Dn64OdQ7.js → KnowledgeGraph-CcE2EVYX.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-PmElVRrT.js → Logs-DyfN4R5w.js} +2 -2
- package/src/assets/web-panel/assets/{MarkdownRenderer-BFiVKf5t.js → MarkdownRenderer-Bj62Aq0M.js} +1 -1
- package/src/assets/web-panel/assets/{Marketplace-OW4jTXwx.js → Marketplace-CuuuAXUh.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-BEq2Ib4x.js → McpTools-948Fithv.js} +3 -3
- package/src/assets/web-panel/assets/{Memory-Can_P2oK.js → Memory-D4PINvyy.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-DJ8R-dn3.js → MobileBridge-ECKMaLzX.js} +1 -1
- package/src/assets/web-panel/assets/{MobileProjects-B7kV9GOt.js → MobileProjects-CB5MAcvD.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-BfxamolS.js → Mtc-BRzIM3HJ.js} +4 -4
- package/src/assets/web-panel/assets/{MtcAudit-DHtuv7av.js → MtcAudit-CGeAXJGn.js} +2 -2
- package/src/assets/web-panel/assets/{Multisig-DLkLpvxc.js → Multisig-C_qJ-8K-.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-u4XtJTIt.js → NLProgramming-DAEyCn7T.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-BwuuPJLS.js → Notes-DmD3MEec.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-HEeu-E9v.js → NotificationSettings-Cv4Q3VC9.js} +1 -1
- package/src/assets/web-panel/assets/OrderTableRenderer-BNlpaFjH.js +1 -0
- package/src/assets/web-panel/assets/{Organization-Yh-czs3b.js → Organization-DqAFdz6p.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-DmE8mYVM.js → Overflow-8Ye9cIcE.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-CWVck8WN.js → P2P-755SfHoJ.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-DgFqekod.js → PdhVaultBrowser-CgZLiucX.js} +4 -4
- package/src/assets/web-panel/assets/{Permissions-BtJBVOHV.js → Permissions-C-vFF_rL.js} +3 -3
- package/src/assets/web-panel/assets/{PersonalDataHub-6VBObXzd.js → PersonalDataHub-Diz1oXM3.js} +5 -5
- package/src/assets/web-panel/assets/{Pipeline-D222FmqY.js → Pipeline-D4kIzsZG.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-Bi9FMikp.js → Privacy-QKLkSAUH.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-Bo52H47H.js → ProjectInit-I0S9o_RT.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-BPkesfOc.js → ProjectSettings-DdgV3-Ho.js} +2 -2
- package/src/assets/web-panel/assets/{Projects-GynohSFX.js → Projects-BJHHegtj.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-DVdMg04n.js → Providers-uVa1zfbS.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-DqJCb595.js → QrScannerModal-YLVpOChR.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-J7loQbXi.js → QuickAsk-535AYH61.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-BI5aURVc.js → Recommend-C_P6eNSw.js} +1 -1
- package/src/assets/web-panel/assets/{RemoteSession-BN2sqGvz.js → RemoteSession-EXH1SbNj.js} +2 -2
- package/src/assets/web-panel/assets/{Reputation-BGOND-Fi.js → Reputation-Cxc7d3eU.js} +1 -1
- package/src/assets/web-panel/assets/{Row-77dfwaUk.js → Row-EDqJy-wS.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-FtBAxS3g.js → RssFeed-C03Xeg9_.js} +2 -2
- package/src/assets/web-panel/assets/{Search-BaYVLFb7.js → Search-DsIga9DK.js} +1 -1
- package/src/assets/web-panel/assets/{Security-LE3Vv6ab.js → Security-DgArMFc-.js} +3 -3
- package/src/assets/web-panel/assets/{Services-C5pP-Whz.js → Services-MooDpHBP.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-CLqKUVsF.js → Skeleton-B10P1Dr6.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-BPjN0SX5.js → Skills-DHLHEkLl.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-14jD70kg.js → Sla-D4RT7d4g.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-Dr9ij42W.js → SpeechSettings-D8u6F-LV.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-BzLHP7B8.js → SyncSettings-4nvNzRq8.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-YqV9b0rV.js → Tasks-CmCb8zNO.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-CxxAE4PK.js → Templates-CzESIa21.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-CRb3PcKJ.js → Tenant-Ch_N3p4d.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-CTzPpBaP.js → Terminal-BZccUf_X.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-DjFUj_hy.js → TimelineRenderer-FrKcNy_3.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-Bbb8tPvx.js → Tokens-4xvLpXfD.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-CSeWGM0W.js → Trigger-84UjyxXd.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-JgESMBo3.js → Trust-M6UtHnji.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-CiObLk0T.js → UkeySign-L_xEgtCg.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-CFEZaQ2x.js → VideoEditing-BLJCX9ru.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-DR8ZGDNn.js → Wallet-DwL6uJCj.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-DxZukvu7.js → WebAuthn-Bmn9pdzz.js} +5 -5
- package/src/assets/web-panel/assets/{WorkflowEditor-CKgSZQwn.js → WorkflowEditor-DSsZ5xG1.js} +1 -1
- package/src/assets/web-panel/assets/{chat-CTxEQE66.js → chat--FGNUaa8.js} +1 -1
- package/src/assets/web-panel/assets/{colors-CAjKMUu3.js → colors-DeuwNdqX.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-BXuz49at.js → compact-item-I4XKxRFU.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-CFN_Hwr9.js → createContext-RoD2p5Ba.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-ctnml4IW.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-BwoSBSfP.js → hasIn-BsvyddUM.js} +1 -1
- package/src/assets/web-panel/assets/{index-CB3kVd9c.js → index-0tRU1Sv-.js} +1 -1
- package/src/assets/web-panel/assets/{index-o9DpkZKf.js → index-4xHc2WjT.js} +1 -1
- package/src/assets/web-panel/assets/{index-BmQITjMU.js → index-B8-eGLN9.js} +1 -1
- package/src/assets/web-panel/assets/{index-DY-gBSm8.js → index-BS_uqSTa.js} +1 -1
- package/src/assets/web-panel/assets/{index-F2E5RCwz.js → index-BYEVBlCl.js} +1 -1
- package/src/assets/web-panel/assets/{index-CF9lWi1o.js → index-BcBM065G.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bu2P6u8m.js → index-BnrL4s-3.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dv7V2kg6.js → index-BrZPb0On.js} +1 -1
- package/src/assets/web-panel/assets/index-C7PN8mh1.js +1 -0
- package/src/assets/web-panel/assets/{index-DViK2bkv.js → index-CBazK4-7.js} +1 -1
- package/src/assets/web-panel/assets/{index-BmXpdcHI.js → index-CPS3zv1c.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bqv_Cray.js → index-CSrZiiAs.js} +1 -1
- package/src/assets/web-panel/assets/{index-B7kp-zRE.js → index-CVwZMt9Z.js} +1 -1
- package/src/assets/web-panel/assets/{index-B0QbLlWn.js → index-CdgKZYgm.js} +1 -1
- package/src/assets/web-panel/assets/{index-DjF5BOZx.js → index-CesTu01s.js} +1 -1
- package/src/assets/web-panel/assets/{index-CSmFby3Q.js → index-CiHlSuMl.js} +1 -1
- package/src/assets/web-panel/assets/{index-B2o_BBjg.js → index-CsLVac9n.js} +1 -1
- package/src/assets/web-panel/assets/{index-CehdwJ_Q.js → index-D1ONyBTW.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bj4hIiLW.js → index-D4IZsKbF.js} +1 -1
- package/src/assets/web-panel/assets/{index-_ZtCyUdz.js → index-D4P4vpmv.js} +1 -1
- package/src/assets/web-panel/assets/{index-B9yR7zqr.js → index-D6J8dz7X.js} +1 -1
- package/src/assets/web-panel/assets/{index-u9_DM3ZC.js → index-DChy2sHE.js} +1 -1
- package/src/assets/web-panel/assets/{index-C8er4W9u.js → index-DKUCl_Lk.js} +1 -1
- package/src/assets/web-panel/assets/{index-BK4ftQ4d.js → index-DRluW3_r.js} +1 -1
- package/src/assets/web-panel/assets/{index-B2tEnBPx.js → index-DWUmhNO-.js} +1 -1
- package/src/assets/web-panel/assets/{index-IY9bd5az.js → index-DXnpVGG3.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cp5y7lX_.js → index-DYOpAS6-.js} +1 -1
- package/src/assets/web-panel/assets/{index-T3MTE6jB.js → index-DiH-3cR2.js} +1 -1
- package/src/assets/web-panel/assets/{index-DxunxaTw.js → index-DlEfwgzr.js} +1 -1
- package/src/assets/web-panel/assets/index-KnbBJAO-.js +1 -0
- package/src/assets/web-panel/assets/{index-DTX9CJPx.js → index-R4St_zjR.js} +1 -1
- package/src/assets/web-panel/assets/{index-Tz5dheZa.js → index-ScgoDU9V.js} +1 -1
- package/src/assets/web-panel/assets/{index-DmkbAADP.js → index-UWdT_lty.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bw9s2d3c.js → index-VAlor744.js} +1 -1
- package/src/assets/web-panel/assets/{index-CN53dE_u.js → index-Wco_uvRo.js} +1 -1
- package/src/assets/web-panel/assets/{index-DpdDnZX_.js → index-ZgFED_Zd.js} +1 -1
- package/src/assets/web-panel/assets/{index-IahILygB.js → index-jaHeti4i.js} +3 -3
- package/src/assets/web-panel/assets/{index-Cgk0YEiq.js → index-rJDabtw4.js} +1 -1
- package/src/assets/web-panel/assets/{index-t2Ch_JKn.js → index-vRiGKIP0.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-BoiGJDoO.js → initDefaultProps-BHT0PacY.js} +1 -1
- package/src/assets/web-panel/assets/{motion-5eL4E0pA.js → motion-CBYsMtsC.js} +1 -1
- package/src/assets/web-panel/assets/{move-DjggDi_1.js → move-DnHfFV4K.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-Ce8Vo2T3.js → mtc-parser-DfGkRYrx.js} +1 -1
- package/src/assets/web-panel/assets/{omit-D1yOBaO2.js → omit-SjLcPQA9.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-8NLceQe8.js → pickAttrs-CCZHF4ep.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-CsIdBRmQ.js → placementArrow-DjCGn2sJ.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-GM5NE8En.js → responsiveObserve-BCFCl2on.js} +1 -1
- package/src/assets/web-panel/assets/{slide-44yj3u49.js → slide-DsfmuIZu.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-B8tqtWcX.js → statusUtils-hPKuJUia.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-NhDPBbyB.js → styleChecker-DOXKH7Kf.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-C8Qz1GtN.js → useFlexGapSupport-B_G7yqio.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-ClUv4kih.js → useFs-BXOTOm2l.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-BwkOVEh6.js → usePersonalDataHub-CRvie3g7.js} +1 -1
- package/src/assets/web-panel/assets/{vnode--gMF33R0.js → vnode-D9_zMmww.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-DXg3TqOP.js → zoom-C4tW03qI.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/data/changelog.json +52 -0
- package/src/lib/artifact-store.js +51 -3
- package/src/lib/bounded-artifact-file-read.js +131 -0
- package/src/lib/evolution/evolution-artifact-ports.js +235 -129
- package/src/lib/evolution/evolution-eval-cohort-enrollment.js +713 -47
- package/src/lib/evolution/evolution-eval-gate.js +146 -0
- package/src/lib/evolution/evolution-eval-launch-admission.js +168 -90
- package/src/lib/evolution/evolution-eval-ledger-capture.js +50 -0
- package/src/lib/evolution/evolution-eval-readonly-audit.js +106 -0
- package/src/lib/evolution/evolution-ledger-file-backend.js +20 -0
- package/src/lib/evolution/evolution-ledger-ports.js +59 -27
- package/src/lib/evolution/evolution-ledger-v2-journal.js +55 -18
- package/src/lib/evolution/evolution-workbench-file-resources.js +19 -1
- package/src/lib/evolution/rrsi-cohort-registration.js +275 -0
- package/src/lib/evolution/rrsi-contracts.js +742 -0
- package/src/lib/evolution/rrsi-data.js +196 -0
- package/src/lib/evolution/rrsi-evaluation-adapter.js +275 -0
- package/src/lib/evolution/rrsi-evaluation-variants.js +267 -0
- package/src/lib/evolution/rrsi-group-statistics.js +553 -0
- package/src/lib/evolution/rrsi-history-ledger-adapter.js +3286 -0
- package/src/lib/evolution/rrsi-installation-route-contracts.js +275 -0
- package/src/lib/evolution/rrsi-installation-route-reader.js +282 -0
- package/src/lib/evolution/rrsi-native-batch-evidence.js +520 -0
- package/src/lib/evolution/rrsi-native-eval-row-collector.js +538 -0
- package/src/lib/evolution/rrsi-native-evaluation-batch.js +547 -0
- package/src/lib/evolution/rrsi-native-evaluation-plan.js +431 -0
- package/src/lib/evolution/rrsi-native-group-statistics-plan.js +121 -0
- package/src/lib/evolution/rrsi-native-group-statistics.js +482 -0
- package/src/lib/evolution/rrsi-native-quality-receipt-contracts.js +321 -0
- package/src/lib/evolution/rrsi-native-quality-receipt.js +256 -0
- package/src/lib/evolution/rrsi-native-statistics-protocol.js +330 -0
- package/src/lib/evolution/rrsi-observed-text-index.js +978 -0
- package/src/lib/evolution/rrsi-parent-binding.js +290 -0
- package/src/lib/evolution/rrsi-pm-execution-bridge.js +500 -0
- package/src/lib/evolution/rrsi-pm-training-mapping.js +134 -0
- package/src/lib/evolution/rrsi-preparation-contracts.js +213 -0
- package/src/lib/evolution/rrsi-registry-history-binding.js +193 -0
- package/src/lib/evolution/rrsi-registry-runtime-policy.js +648 -0
- package/src/lib/evolution/rrsi-registry-store-policy.js +1271 -0
- package/src/lib/evolution/rrsi-runtime-composition.js +79 -0
- package/src/lib/evolution/rrsi-selector.js +434 -0
- package/src/lib/evolution/rrsi-statistics-simulation.js +354 -0
- package/src/lib/evolution/rrsi-tenant-index-anchor-contracts.js +223 -0
- package/src/lib/evolution/rrsi-tenant-index-anchor-history.js +157 -0
- package/src/lib/evolution/skill-candidate-registry.js +216 -29
- package/src/lib/evolution/skill-registry-maintenance.js +80 -0
- package/src/lib/evolution/skill-registry-writer-control.js +138 -0
- package/src/lib/evolution/skill-release-registry.js +414 -169
- package/src/lib/formal-quality-eval-runtime.js +2 -14
- package/src/lib/goal-store.js +225 -16
- package/src/lib/process-execution-broker/windows-native-evaluator-capabilities.js +291 -30
- package/src/lib/record-replay/skill-recorder.js +38 -3
- package/src/lib/remote-read-loop-guard.js +227 -24
- package/src/lib/scheduler-kernel/authority-resolver.js +12 -163
- package/src/lib/scheduler-kernel/contract.js +27 -414
- package/src/lib/scheduler-kernel/runtime.js +21 -823
- package/src/lib/scheduler-kernel/service.js +11 -328
- package/src/lib/scheduler-kernel/source-locator-path.js +7 -142
- package/src/lib/scheduler-kernel/store.js +67 -5931
- package/src/lib/secure-fs.js +16 -1314
- package/src/lib/task-progress-tracker.js +6 -1
- package/src/lib/with-file-lock.js +122 -20
- package/src/runtime/agent-core.js +71 -23
- package/src/assets/web-panel/assets/ChatBubbleRenderer-fcc_Tvqu.js +0 -1
- package/src/assets/web-panel/assets/OrderTableRenderer-BtvN-Qwh.js +0 -1
- package/src/assets/web-panel/assets/devWarning-CfB8DxT2.js +0 -1
- package/src/assets/web-panel/assets/index-CCsRfd0k.js +0 -1
- package/src/assets/web-panel/assets/index-CsmiZIQ4.js +0 -1
|
@@ -197,7 +197,9 @@ export class TaskProgressTracker {
|
|
|
197
197
|
!!result.error ||
|
|
198
198
|
result.success === false ||
|
|
199
199
|
result.isError === true ||
|
|
200
|
-
(Number.isInteger(result.exitCode) &&
|
|
200
|
+
(Number.isInteger(result.exitCode) &&
|
|
201
|
+
result.exitCode !== 0 &&
|
|
202
|
+
result.predicateResult !== false) ||
|
|
201
203
|
(Number.isInteger(result.exit_code) && result.exit_code !== 0);
|
|
202
204
|
const noChange =
|
|
203
205
|
result?.alreadyApplied === true ||
|
|
@@ -299,6 +301,9 @@ export class TaskProgressTracker {
|
|
|
299
301
|
? command.length > 1000
|
|
300
302
|
: previous?.invocationTruncated || false,
|
|
301
303
|
exitCode: result?.exitCode ?? result?.exit_code ?? null,
|
|
304
|
+
...(typeof result?.predicateResult === "boolean"
|
|
305
|
+
? { predicateResult: result.predicateResult }
|
|
306
|
+
: {}),
|
|
302
307
|
...(result?.code ? { code: boundedText(result.code, 120) } : {}),
|
|
303
308
|
status:
|
|
304
309
|
result?.status ||
|
|
@@ -22,13 +22,54 @@
|
|
|
22
22
|
* lock convoys.
|
|
23
23
|
*
|
|
24
24
|
* @param {string} targetPath the file being guarded (lock is `${targetPath}.lock`)
|
|
25
|
-
* @param {(ctx:{locked:boolean,waitMs:number,attempts:number,publishReleaseAfterPathRemoved:(pendingPath:string)=>boolean})=>T} fn
|
|
25
|
+
* @param {(ctx:{locked:boolean,waitMs:number,attempts:number,assertOwnership:()=>true,publishReleaseAfterPathRemoved:(pendingPath:string)=>boolean})=>T} fn
|
|
26
26
|
* critical section; `publishReleaseAfterPathRemoved` lets a transaction
|
|
27
27
|
* publish an exact, contender-completable handoff before its final atomic
|
|
28
28
|
* rename removes a uniquely named staging path
|
|
29
29
|
* @returns {T} whatever `fn` returns
|
|
30
30
|
*/
|
|
31
31
|
export function withFileLock(targetPath, fn, opts = {}) {
|
|
32
|
+
const operation = runLocked(targetPath, fn, opts, false);
|
|
33
|
+
const sleep = opts._sleep ?? sleepSync;
|
|
34
|
+
let step = operation.next();
|
|
35
|
+
while (!step.done) {
|
|
36
|
+
try {
|
|
37
|
+
sleep(step.value.waitMs);
|
|
38
|
+
} catch (error) {
|
|
39
|
+
step = operation.throw(error);
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
step = operation.next();
|
|
43
|
+
}
|
|
44
|
+
return step.value;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Hold the same lock through asynchronous callback settlement and cleanup.
|
|
49
|
+
* Early publishReleaseAfterPathRemoved handoffs are unavailable (return false)
|
|
50
|
+
* because no contender may enter while the asynchronous body is still active.
|
|
51
|
+
*/
|
|
52
|
+
export async function withFileLockAsync(targetPath, fn, opts = {}) {
|
|
53
|
+
const operation = runLocked(targetPath, fn, opts, true);
|
|
54
|
+
const sleep = opts._sleep ?? sleepAsync;
|
|
55
|
+
let step = operation.next();
|
|
56
|
+
while (!step.done) {
|
|
57
|
+
let value;
|
|
58
|
+
try {
|
|
59
|
+
value = Object.hasOwn(step.value, "callbackResult")
|
|
60
|
+
? await step.value.callbackResult
|
|
61
|
+
: await sleep(step.value.waitMs);
|
|
62
|
+
} catch (error) {
|
|
63
|
+
step = operation.throw(error);
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
step = operation.next(value);
|
|
67
|
+
}
|
|
68
|
+
return step.value;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// One acquire/reclaim/release state machine; only waiting differs by API.
|
|
72
|
+
function* runLocked(targetPath, fn, opts, asynchronous) {
|
|
32
73
|
const {
|
|
33
74
|
timeoutMs = 2000,
|
|
34
75
|
staleMs = 30000,
|
|
@@ -38,7 +79,6 @@ export function withFileLock(targetPath, fn, opts = {}) {
|
|
|
38
79
|
yieldAfterReleaseMs = 0,
|
|
39
80
|
_fs = defaultFs,
|
|
40
81
|
_now = () => Date.now(),
|
|
41
|
-
_sleep = sleepSync,
|
|
42
82
|
_random = Math.random,
|
|
43
83
|
_isProcessAlive = isProcessAlive,
|
|
44
84
|
_ownerToken = () => randomUUID(),
|
|
@@ -61,6 +101,9 @@ export function withFileLock(targetPath, fn, opts = {}) {
|
|
|
61
101
|
let lastOwnerObservation = null;
|
|
62
102
|
let retryAttempt = 0;
|
|
63
103
|
let releasePublished = false;
|
|
104
|
+
let bodyActive = false;
|
|
105
|
+
let ownershipLost = false;
|
|
106
|
+
let directoryIdentity = null;
|
|
64
107
|
const deadline = _now() + timeoutMs;
|
|
65
108
|
|
|
66
109
|
for (;;) {
|
|
@@ -74,16 +117,15 @@ export function withFileLock(targetPath, fn, opts = {}) {
|
|
|
74
117
|
if (
|
|
75
118
|
failIfUnavailable &&
|
|
76
119
|
isTransientLockError(error) &&
|
|
77
|
-
waitForRetry({
|
|
120
|
+
(yield* waitForRetry({
|
|
78
121
|
_now,
|
|
79
|
-
_sleep,
|
|
80
122
|
_random,
|
|
81
123
|
deadline,
|
|
82
124
|
retryAttempt: retryAttempt++,
|
|
83
125
|
retryMs,
|
|
84
126
|
maxRetryMs,
|
|
85
127
|
retryJitterMs,
|
|
86
|
-
})
|
|
128
|
+
}))
|
|
87
129
|
) {
|
|
88
130
|
continue;
|
|
89
131
|
}
|
|
@@ -147,16 +189,15 @@ export function withFileLock(targetPath, fn, opts = {}) {
|
|
|
147
189
|
}
|
|
148
190
|
}
|
|
149
191
|
if (
|
|
150
|
-
!waitForRetry({
|
|
192
|
+
!(yield* waitForRetry({
|
|
151
193
|
_now,
|
|
152
|
-
_sleep,
|
|
153
194
|
_random,
|
|
154
195
|
deadline,
|
|
155
196
|
retryAttempt: retryAttempt++,
|
|
156
197
|
retryMs,
|
|
157
198
|
maxRetryMs,
|
|
158
199
|
retryJitterMs,
|
|
159
|
-
})
|
|
200
|
+
}))
|
|
160
201
|
) {
|
|
161
202
|
break;
|
|
162
203
|
}
|
|
@@ -186,12 +227,48 @@ export function withFileLock(targetPath, fn, opts = {}) {
|
|
|
186
227
|
let bodyThrew = false;
|
|
187
228
|
let result;
|
|
188
229
|
try {
|
|
230
|
+
if (held) directoryIdentity = readLockDirectoryIdentity(_fs, lockDir);
|
|
231
|
+
bodyActive = true;
|
|
189
232
|
result = fn({
|
|
190
233
|
locked: held,
|
|
191
234
|
waitMs: Math.max(0, _now() - owner.startedAt),
|
|
192
235
|
attempts: retryAttempt + 1,
|
|
236
|
+
assertOwnership() {
|
|
237
|
+
let cause = null;
|
|
238
|
+
try {
|
|
239
|
+
if (
|
|
240
|
+
held &&
|
|
241
|
+
bodyActive &&
|
|
242
|
+
!ownershipLost &&
|
|
243
|
+
!releasePublished &&
|
|
244
|
+
sameLockDirectoryIdentity(
|
|
245
|
+
directoryIdentity,
|
|
246
|
+
readLockDirectoryIdentity(_fs, lockDir),
|
|
247
|
+
) &&
|
|
248
|
+
sameOwner(readOwner(_fs, ownerPath), owner) &&
|
|
249
|
+
pathStatus(_fs, path.join(lockDir, `.release-${owner.token}`)) ===
|
|
250
|
+
"absent"
|
|
251
|
+
)
|
|
252
|
+
return true;
|
|
253
|
+
} catch (error) {
|
|
254
|
+
cause = error;
|
|
255
|
+
}
|
|
256
|
+
ownershipLost = true;
|
|
257
|
+
const error = new Error(
|
|
258
|
+
`State lock ownership is no longer current: ${targetPath}`,
|
|
259
|
+
cause ? { cause } : undefined,
|
|
260
|
+
);
|
|
261
|
+
error.code = "STATE_LOCK_OWNERSHIP_LOST";
|
|
262
|
+
throw error;
|
|
263
|
+
},
|
|
193
264
|
publishReleaseAfterPathRemoved(pendingPath) {
|
|
194
|
-
if (
|
|
265
|
+
if (
|
|
266
|
+
asynchronous ||
|
|
267
|
+
!bodyActive ||
|
|
268
|
+
!held ||
|
|
269
|
+
typeof pendingPath !== "string" ||
|
|
270
|
+
!pendingPath
|
|
271
|
+
) {
|
|
195
272
|
return false;
|
|
196
273
|
}
|
|
197
274
|
const current = readOwner(_fs, ownerPath);
|
|
@@ -214,21 +291,31 @@ export function withFileLock(targetPath, fn, opts = {}) {
|
|
|
214
291
|
return true;
|
|
215
292
|
},
|
|
216
293
|
});
|
|
294
|
+
if (asynchronous) result = yield { callbackResult: result };
|
|
217
295
|
} catch (error) {
|
|
218
296
|
bodyThrew = true;
|
|
219
297
|
bodyError = error;
|
|
220
298
|
}
|
|
299
|
+
bodyActive = false;
|
|
221
300
|
let released = !held;
|
|
222
301
|
let releaseError = null;
|
|
223
302
|
if (held) {
|
|
224
303
|
try {
|
|
225
|
-
released =
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
304
|
+
released =
|
|
305
|
+
ownershipLost &&
|
|
306
|
+
!releasePublished &&
|
|
307
|
+
!sameLockDirectoryIdentity(
|
|
308
|
+
directoryIdentity,
|
|
309
|
+
readLockDirectoryIdentity(_fs, lockDir),
|
|
310
|
+
)
|
|
311
|
+
? false
|
|
312
|
+
: releaseOwnedDirectory(
|
|
313
|
+
_fs,
|
|
314
|
+
lockDir,
|
|
315
|
+
owner,
|
|
316
|
+
isOwnerAlive,
|
|
317
|
+
releasePublished,
|
|
318
|
+
);
|
|
232
319
|
} catch (error) {
|
|
233
320
|
releaseError = error;
|
|
234
321
|
}
|
|
@@ -245,7 +332,7 @@ export function withFileLock(targetPath, fn, opts = {}) {
|
|
|
245
332
|
// The lock is gone or its exact release marker has transferred cleanup to
|
|
246
333
|
// contenders. Let an existing waiter run before a process performing many
|
|
247
334
|
// tiny transactions can immediately reacquire it.
|
|
248
|
-
|
|
335
|
+
yield { waitMs: yieldAfterReleaseMs };
|
|
249
336
|
}
|
|
250
337
|
return result;
|
|
251
338
|
}
|
|
@@ -256,6 +343,7 @@ import { randomUUID } from "node:crypto";
|
|
|
256
343
|
|
|
257
344
|
const defaultFs = {
|
|
258
345
|
mkdirSync: (p) => fs.mkdirSync(p),
|
|
346
|
+
lstatSync: (p) => fs.lstatSync(p, { bigint: true }),
|
|
259
347
|
statSync: (p) => fs.statSync(p),
|
|
260
348
|
readFileSync: (p, o) => fs.readFileSync(p, o),
|
|
261
349
|
writeFileSync: (p, value, o) => fs.writeFileSync(p, value, o),
|
|
@@ -263,6 +351,17 @@ const defaultFs = {
|
|
|
263
351
|
rmSync: (p, o) => fs.rmSync(p, o),
|
|
264
352
|
};
|
|
265
353
|
|
|
354
|
+
function readLockDirectoryIdentity(io, lockDir) {
|
|
355
|
+
const value = io.lstatSync ? io.lstatSync(lockDir) : io.statSync(lockDir);
|
|
356
|
+
if (value.isSymbolicLink?.() || value.isDirectory?.() === false)
|
|
357
|
+
throw new Error("State lock is not a regular directory");
|
|
358
|
+
return { dev: value.dev, ino: value.ino };
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
function sameLockDirectoryIdentity(left, right) {
|
|
362
|
+
return !!left && left.dev === right.dev && left.ino === right.ino;
|
|
363
|
+
}
|
|
364
|
+
|
|
266
365
|
function acquireOwnedDirectory(_fs, lockDir, owner) {
|
|
267
366
|
const serializedOwner = JSON.stringify(owner);
|
|
268
367
|
// Injected legacy filesystems used by a few consumers may not implement
|
|
@@ -350,9 +449,8 @@ function isTransientLockError(error) {
|
|
|
350
449
|
return !!error && TRANSIENT_LOCK_ERROR_CODES.has(error.code);
|
|
351
450
|
}
|
|
352
451
|
|
|
353
|
-
function waitForRetry({
|
|
452
|
+
function* waitForRetry({
|
|
354
453
|
_now,
|
|
355
|
-
_sleep,
|
|
356
454
|
_random,
|
|
357
455
|
deadline,
|
|
358
456
|
retryAttempt,
|
|
@@ -373,7 +471,7 @@ function waitForRetry({
|
|
|
373
471
|
jitterLimit > 0 && Number.isFinite(sample)
|
|
374
472
|
? Math.floor(Math.min(1, Math.max(0, sample)) * jitterLimit)
|
|
375
473
|
: 0;
|
|
376
|
-
|
|
474
|
+
yield { waitMs: Math.min(remaining, exponential + jitter) };
|
|
377
475
|
return true;
|
|
378
476
|
}
|
|
379
477
|
|
|
@@ -730,6 +828,10 @@ function releaseOwnedDirectory(
|
|
|
730
828
|
}
|
|
731
829
|
|
|
732
830
|
/** Synchronous sleep that doesn't busy-spin the CPU when possible. */
|
|
831
|
+
function sleepAsync(ms) {
|
|
832
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
833
|
+
}
|
|
834
|
+
|
|
733
835
|
function sleepSync(ms) {
|
|
734
836
|
try {
|
|
735
837
|
Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms);
|
|
@@ -7545,10 +7545,27 @@ async function executeToolInner(
|
|
|
7545
7545
|
readOnly,
|
|
7546
7546
|
});
|
|
7547
7547
|
}
|
|
7548
|
+
if (
|
|
7549
|
+
gitArgs[0] === "merge-base" &&
|
|
7550
|
+
gitArgs.includes("--is-ancestor") &&
|
|
7551
|
+
(res.status === 0 || res.status === 1)
|
|
7552
|
+
) {
|
|
7553
|
+
return attachDescriptor({
|
|
7554
|
+
success: true,
|
|
7555
|
+
stdout: String(res.stdout || "").substring(0, 30000),
|
|
7556
|
+
stderr: String(res.stderr || "").substring(0, 2000),
|
|
7557
|
+
exitCode: res.status,
|
|
7558
|
+
command: normalizedCommand,
|
|
7559
|
+
readOnly: true,
|
|
7560
|
+
predicateResult: res.status === 0,
|
|
7561
|
+
hint: "merge-base --is-ancestor completed: predicateResult indicates whether the first commit is an ancestor of the second. Exit code 1 means false, not a tool failure; no shell echo is needed.",
|
|
7562
|
+
});
|
|
7563
|
+
}
|
|
7548
7564
|
if (res.status !== 0) {
|
|
7549
7565
|
const stderr = String(res.stderr || "").substring(0, 2000);
|
|
7550
7566
|
return attachDescriptor({
|
|
7551
7567
|
error: stderr || `git exited with code ${res.status}`,
|
|
7568
|
+
stdout: String(res.stdout || "").substring(0, 30000),
|
|
7552
7569
|
stderr,
|
|
7553
7570
|
exitCode: res.status,
|
|
7554
7571
|
command: normalizedCommand,
|
|
@@ -14684,7 +14701,7 @@ export async function* agentLoop(messages, options) {
|
|
|
14684
14701
|
return;
|
|
14685
14702
|
}
|
|
14686
14703
|
readFileLoopGuard.finishBatch();
|
|
14687
|
-
if (remoteReadLoopGuard.stalled) {
|
|
14704
|
+
if (remoteReadLoopGuard.stalled && !remoteReadLoopGuard.synthesisRequired) {
|
|
14688
14705
|
await _awaitBackgroundUsageSettlement(
|
|
14689
14706
|
backgroundSubAgents,
|
|
14690
14707
|
backgroundUsageFailureState,
|
|
@@ -15291,6 +15308,7 @@ export async function* agentLoop(messages, options) {
|
|
|
15291
15308
|
const prInvestigationExhausted =
|
|
15292
15309
|
prActionTask &&
|
|
15293
15310
|
taskProgressTracker.explorationCalls >= PR_INVESTIGATION_LIMIT;
|
|
15311
|
+
const inspectionSynthesisRequired = remoteReadLoopGuard.synthesisRequired;
|
|
15294
15312
|
// Keep read_file visible during task recovery so the model can request a
|
|
15295
15313
|
// known, explicitly bounded section. Admission below still rejects broad
|
|
15296
15314
|
// new-file reads and repeated covered ranges.
|
|
@@ -15320,7 +15338,7 @@ export async function* agentLoop(messages, options) {
|
|
|
15320
15338
|
...(readToolRecoveryPaused ? ["read_file"] : []),
|
|
15321
15339
|
...(taskRecoveryTurn ? taskRecoveryTools : []),
|
|
15322
15340
|
...remoteRecoveryTools,
|
|
15323
|
-
...(prInvestigationExhausted
|
|
15341
|
+
...(prInvestigationExhausted || inspectionSynthesisRequired
|
|
15324
15342
|
? getEffectiveToolDefinitions(effectiveToolOptions).map(
|
|
15325
15343
|
(tool) => tool.function.name,
|
|
15326
15344
|
)
|
|
@@ -15486,10 +15504,19 @@ export async function* agentLoop(messages, options) {
|
|
|
15486
15504
|
}
|
|
15487
15505
|
}
|
|
15488
15506
|
|
|
15489
|
-
if (prInvestigationExhausted) {
|
|
15507
|
+
if (prInvestigationExhausted || inspectionSynthesisRequired) {
|
|
15490
15508
|
callMessages = [
|
|
15491
15509
|
...callMessages,
|
|
15492
|
-
{
|
|
15510
|
+
{
|
|
15511
|
+
role: "system",
|
|
15512
|
+
content: inspectionSynthesisRequired
|
|
15513
|
+
? "Repeated evidence inspection continued after recovery guidance. This is the final synthesis turn; no tools may execute. " +
|
|
15514
|
+
"Answer the user's actual question from the retained observations, in the user's language. " +
|
|
15515
|
+
"Distinguish verified facts from unknowns and unfinished actions. A status answer may be supported even when no file was changed. " +
|
|
15516
|
+
"Do not claim an issue was closed, a fix was applied, or a workflow passed without successful evidence for that exact action/workflow. " +
|
|
15517
|
+
"If an authorized action remains undone, state that explicitly and name the concrete missing prerequisite; do not promise another round of the same queries."
|
|
15518
|
+
: PR_INVESTIGATION_EXIT_GUIDANCE,
|
|
15519
|
+
},
|
|
15493
15520
|
];
|
|
15494
15521
|
contextMemoryTrustedSystemIndexes.push(callMessages.length - 1);
|
|
15495
15522
|
}
|
|
@@ -15730,7 +15757,7 @@ export async function* agentLoop(messages, options) {
|
|
|
15730
15757
|
}
|
|
15731
15758
|
|
|
15732
15759
|
const toolCalls = msg.tool_calls;
|
|
15733
|
-
if (prInvestigationExhausted) {
|
|
15760
|
+
if (prInvestigationExhausted || inspectionSynthesisRequired) {
|
|
15734
15761
|
// Exactly one synthesis request, even if the provider ignores the empty
|
|
15735
15762
|
// tool set or a Stop hook normally asks to continue. Settle usage first;
|
|
15736
15763
|
// do not insert unexecuted calls or turn a safety stop into completion.
|
|
@@ -15741,7 +15768,9 @@ export async function* agentLoop(messages, options) {
|
|
|
15741
15768
|
yield* _drainSubAgentUsage(subAgentUsageSink);
|
|
15742
15769
|
if (toolCalls?.length) {
|
|
15743
15770
|
const error = new Error(
|
|
15744
|
-
|
|
15771
|
+
(inspectionSynthesisRequired
|
|
15772
|
+
? "Evidence inspection stopped after repeated unchanged queries; the model did not produce the requested synthesis. "
|
|
15773
|
+
: "PR investigation stopped after repeated exploration without an actionable outcome; the task is incomplete. ") +
|
|
15745
15774
|
"The model requested more tools after the final synthesis instruction. Retained evidence: " +
|
|
15746
15775
|
(
|
|
15747
15776
|
taskProgressTracker.checkpointFor(runId) ||
|
|
@@ -15749,17 +15778,27 @@ export async function* agentLoop(messages, options) {
|
|
|
15749
15778
|
"No verified findings."
|
|
15750
15779
|
).slice(0, 2000),
|
|
15751
15780
|
);
|
|
15752
|
-
error.code =
|
|
15781
|
+
error.code = inspectionSynthesisRequired
|
|
15782
|
+
? "CC_AGENT_INSPECTION_STALLED"
|
|
15783
|
+
: "CC_AGENT_PR_INVESTIGATION_STALLED";
|
|
15753
15784
|
throw error;
|
|
15754
15785
|
}
|
|
15755
15786
|
yield {
|
|
15756
15787
|
type: "response-complete",
|
|
15757
15788
|
content:
|
|
15758
|
-
|
|
15789
|
+
(inspectionSynthesisRequired
|
|
15790
|
+
? ""
|
|
15791
|
+
: "PR investigation stopped without completing the task.\n\n") +
|
|
15759
15792
|
(msg.content ||
|
|
15760
15793
|
"No actionable outcome was produced; use the retained findings to identify the missing prerequisite."),
|
|
15761
15794
|
};
|
|
15762
|
-
yield {
|
|
15795
|
+
yield {
|
|
15796
|
+
type: "run-ended",
|
|
15797
|
+
runId,
|
|
15798
|
+
reason: inspectionSynthesisRequired
|
|
15799
|
+
? "inspection-synthesis"
|
|
15800
|
+
: "pr-investigation-stalled",
|
|
15801
|
+
};
|
|
15763
15802
|
return;
|
|
15764
15803
|
}
|
|
15765
15804
|
if (Array.isArray(toolCalls) && toolCalls.length > 0) {
|
|
@@ -16069,17 +16108,19 @@ export async function* agentLoop(messages, options) {
|
|
|
16069
16108
|
_throwBackgroundUsageFailureState(backgroundUsageFailureState);
|
|
16070
16109
|
const { result: toolResult, error: toolError } = await promise;
|
|
16071
16110
|
throwIfAborted(signal);
|
|
16072
|
-
|
|
16073
|
-
readFileLoopGuard.record(
|
|
16111
|
+
const taskAdvanced = taskProgressTracker.record(
|
|
16074
16112
|
call.function.name,
|
|
16075
16113
|
toolResult,
|
|
16076
|
-
|
|
16077
|
-
|
|
16078
|
-
|
|
16079
|
-
|
|
16080
|
-
|
|
16081
|
-
|
|
16114
|
+
toolArgs,
|
|
16115
|
+
runId,
|
|
16116
|
+
);
|
|
16117
|
+
remoteReadLoopGuard.record(
|
|
16118
|
+
call.function.name,
|
|
16119
|
+
toolResult,
|
|
16120
|
+
toolArgs,
|
|
16121
|
+
taskAdvanced,
|
|
16082
16122
|
);
|
|
16123
|
+
readFileLoopGuard.record(call.function.name, toolResult, taskAdvanced);
|
|
16083
16124
|
const failed = emitToolHookLifecycle({
|
|
16084
16125
|
tool: call.function.name,
|
|
16085
16126
|
args: toolArgs,
|
|
@@ -16593,15 +16634,22 @@ export async function* agentLoop(messages, options) {
|
|
|
16593
16634
|
// context — but tell the model when we cut it (no more silent
|
|
16594
16635
|
// mid-content slice). See MAX_TOOL_RESULT_CHARS / capToolResultString.
|
|
16595
16636
|
const resultStr = toolResultForModel(toolName, toolResult, messages);
|
|
16596
|
-
|
|
16597
|
-
explicitPrCloseActionGuard.record(toolName, toolArgs, toolResult);
|
|
16598
|
-
if (toolName === "edit_file_hashed")
|
|
16599
|
-
readFileLoopGuard.recordEditRecovery(toolResult);
|
|
16600
|
-
readFileLoopGuard.record(
|
|
16637
|
+
const taskAdvanced = taskProgressTracker.record(
|
|
16601
16638
|
toolName,
|
|
16602
16639
|
toolResult,
|
|
16603
|
-
|
|
16640
|
+
toolArgs,
|
|
16641
|
+
runId,
|
|
16604
16642
|
);
|
|
16643
|
+
remoteReadLoopGuard.record(
|
|
16644
|
+
toolName,
|
|
16645
|
+
toolResult,
|
|
16646
|
+
toolArgs,
|
|
16647
|
+
taskAdvanced,
|
|
16648
|
+
);
|
|
16649
|
+
explicitPrCloseActionGuard.record(toolName, toolArgs, toolResult);
|
|
16650
|
+
if (toolName === "edit_file_hashed")
|
|
16651
|
+
readFileLoopGuard.recordEditRecovery(toolResult);
|
|
16652
|
+
readFileLoopGuard.record(toolName, toolResult, taskAdvanced);
|
|
16605
16653
|
const toolContent = warningMsg
|
|
16606
16654
|
? `${resultStr}\n\n${warningMsg}`
|
|
16607
16655
|
: resultStr;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as v,P as u,J as S,U as s,R as a,S as y,K as C,Q as x,V as w,_ as B,b as n}from"./vendor-Bn1JzzAn.js";import{_ as k}from"./index-IahILygB.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=n(()=>{const e=t.event.content||{};return e.text||e.body||e.message||e.title||JSON.stringify(e).slice(0,200)}),i=n(()=>{const e=t.event.content||{};return e.from||e.sender||e.senderName||t.event.actor||"(unknown)"}),l=n(()=>{const e=(t.event.actor||"").toLowerCase();return e.includes("self")||e==="me"||e.endsWith("_self")}),o=n(()=>{const e=t.event.source.adapter||"";return e.startsWith("messaging-qq")?"magenta":e==="wechat"?"green":"blue"}),m=n(()=>{if(!t.event.occurredAt)return"";try{const e=new Date(t.event.occurredAt),p=e.getFullYear(),f=String(e.getMonth()+1).padStart(2,"0"),g=String(e.getDate()).padStart(2,"0"),b=String(e.getHours()).padStart(2,"0"),h=String(e.getMinutes()).padStart(2,"0");return`${p}-${f}-${g} ${b}:${h}`}catch{return""}}),_={props:t,messageText:r,actorLabel:i,isMine:l,adapterColor:o,formattedTime:m,computed:n};return Object.defineProperty(_,"__isScriptSetup",{enumerable:!1,value:!0}),_}},T={class:"bubble"},M={class:"meta"},O={class:"actor"},R={class:"time"},V={class:"body"};function q(c,d,t,r,i,l){const o=v("a-tag");return u(),S("div",{class:B(["chat-row",{mine:r.isMine}])},[s("div",T,[s("div",M,[s("span",O,a(r.actorLabel),1),s("span",R,a(r.formattedTime),1)]),s("div",V,a(r.messageText),1),t.event.source.adapter?(u(),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 j=k(N,[["render",q],["__scopeId","data-v-49238629"],["__file","/tmp/cc-web-panel-OGunJz/repo/packages/web-panel/src/components/pdh/renderers/ChatBubbleRenderer.vue"]]);export{j as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as w,P as l,J as u,U as s,R as n,c as i,K as v,Q as _,V as g,b as a}from"./vendor-Bn1JzzAn.js";import{_ as S}from"./index-IahILygB.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||"—"),y=a(()=>{const t=e.value.amount??e.value.price??e.value.total;return t==null?"—":`${e.value.currency||"¥"} ${typeof t=="number"?t.toFixed(2):t}`}),T=a(()=>d.value.orderNo||e.value.orderNo||e.value.orderId),f=a(()=>e.value.status||e.value.state),b=a(()=>{const t=(f.value||"").toLowerCase();return t.includes("成功")||t.includes("succe")||t.includes("paid")?"green":t.includes("退")||t.includes("refund")?"orange":t.includes("失败")||t.includes("fail")?"red":"default"}),h=a(()=>{if(!o.event.occurredAt)return"";const t=new Date(o.event.occurredAt);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")} ${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}`}),x={props:o,c:e,e:d,merchantText:m,itemText:c,amountText:y,orderNo:T,statusText:f,statusColor:b,formattedTime:h,computed:a};return Object.defineProperty(x,"__isScriptSetup",{enumerable:!1,value:!0}),x}},N={class:"order-card"},C={class:"head"},O={class:"time"},V={class:"row"},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"},J={key:1,class:"row"};function M(p,r,o,e,d,m){const c=w("a-tag");return l(),u("div",N,[s("div",C,[s("span",O,n(e.formattedTime),1),i(c,{color:"gold"},{default:v(()=>[_(n(o.event.source.adapter),1)]),_:1}),i(c,null,{default:v(()=>[_(n(o.event.subtype),1)]),_:1})]),s("div",V,[r[0]||(r[0]=s("span",{class:"key"},"商户",-1)),s("span",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",J,[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 G=S(k,[["render",M],["__scopeId","data-v-5ed5524d"],["__file","/tmp/cc-web-panel-OGunJz/repo/packages/web-panel/src/components/pdh/renderers/OrderTableRenderer.vue"]]);export{G as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Q as r}from"./index-IahILygB.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-77dfwaUk.js";import{a0 as t}from"./index-IahILygB.js";import"./vendor-Bn1JzzAn.js";import"./responsiveObserve-GM5NE8En.js";import"./useFlexGapSupport-C8Qz1GtN.js";import"./styleChecker-NhDPBbyB.js";import"./index-CSmFby3Q.js";import"./icons-DG5UD-6K.js";const l=t(o);export{l as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{C as o}from"./Col-Bdr7JwIx.js";import{a0 as t}from"./index-IahILygB.js";import"./vendor-Bn1JzzAn.js";import"./index-CSmFby3Q.js";import"./icons-DG5UD-6K.js";const s=t(o);export{s as default};
|