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.
Files changed (221) hide show
  1. package/README.md +17 -17
  2. package/package.json +3 -3
  3. package/src/assets/linux-subreaper/linux-arm64/manifest.json +1 -1
  4. package/src/assets/linux-subreaper/linux-x64/manifest.json +1 -1
  5. package/src/assets/web-panel/assets/{AIOps-DgV7xb8F.js → AIOps-oo9rE0gh.js} +1 -1
  6. package/src/assets/web-panel/assets/{ActionButton-CgANpkKu.js → ActionButton-CVJVVv4i.js} +1 -1
  7. package/src/assets/web-panel/assets/{Analytics-DnvpX7RB.js → Analytics-CUXuwmia.js} +3 -3
  8. package/src/assets/web-panel/assets/{AppLayout-C2bHccBM.js → AppLayout-iM4PvCuY.js} +5 -5
  9. package/src/assets/web-panel/assets/{Artifacts-BIhijC9g.js → Artifacts-DKUIJbf9.js} +1 -1
  10. package/src/assets/web-panel/assets/{Audit-CKRjWGdp.js → Audit-C4_SzFN2.js} +1 -1
  11. package/src/assets/web-panel/assets/{BackgroundAgents-CblYtgBE.js → BackgroundAgents-C3427uy-.js} +1 -1
  12. package/src/assets/web-panel/assets/{Backup-Cq35b78a.js → Backup-BpEQQiog.js} +1 -1
  13. package/src/assets/web-panel/assets/{BaseInput-DcB7NoRz.js → BaseInput-C_exQomZ.js} +1 -1
  14. package/src/assets/web-panel/assets/{Chat-tc3b-s7i.js → Chat-DzpkLtWa.js} +5 -5
  15. package/src/assets/web-panel/assets/ChatBubbleRenderer-DX4XmTWm.js +1 -0
  16. package/src/assets/web-panel/assets/{Checkbox-BLD5bH5u.js → Checkbox-CxAC1CU8.js} +1 -1
  17. package/src/assets/web-panel/assets/{Codegen-BLOsoazN.js → Codegen-wDFAGCLp.js} +1 -1
  18. package/src/assets/web-panel/assets/{Col-Bdr7JwIx.js → Col-BvwirhMf.js} +1 -1
  19. package/src/assets/web-panel/assets/{Community-C84BsWE0.js → Community-BJuA7paY.js} +1 -1
  20. package/src/assets/web-panel/assets/{Compact-Dzdwd04z.js → Compact-DzV35_u2.js} +1 -1
  21. package/src/assets/web-panel/assets/{Compliance-CCG-R0EV.js → Compliance-CIDPPvr9.js} +1 -1
  22. package/src/assets/web-panel/assets/{Cowork-BYj72SK0.js → Cowork-DyTMxP3N.js} +3 -3
  23. package/src/assets/web-panel/assets/{Cron-B6iKAwOf.js → Cron-PcNLjMFx.js} +2 -2
  24. package/src/assets/web-panel/assets/{Crosschain-BJ-oDC6u.js → Crosschain-B_O7ck6Z.js} +1 -1
  25. package/src/assets/web-panel/assets/{DID-BnMckGLr.js → DID-CII35Me1.js} +2 -2
  26. package/src/assets/web-panel/assets/{Dashboard-Cyje-gCO.js → Dashboard-DU56fkNz.js} +2 -2
  27. package/src/assets/web-panel/assets/{Dropdown-BpNlenjK.js → Dropdown-DHC8HVeJ.js} +1 -1
  28. package/src/assets/web-panel/assets/{EmailListRenderer-BhonO7Nv.js → EmailListRenderer-oUOHFNsD.js} +1 -1
  29. package/src/assets/web-panel/assets/{EvolutionSettings-DVoNU-Id.js → EvolutionSettings-D7RCAWNl.js} +1 -1
  30. package/src/assets/web-panel/assets/{FamilyGuardDashboard-tdn-KC67.js → FamilyGuardDashboard-CGONPZxC.js} +1 -1
  31. package/src/assets/web-panel/assets/{Federation--EEVrHhz.js → Federation-BbDlPWcl.js} +1 -1
  32. package/src/assets/web-panel/assets/{FormItemContext-Cy8zr0-4.js → FormItemContext-BBJbFQQT.js} +1 -1
  33. package/src/assets/web-panel/assets/{GenericCardRenderer-BuUhpgFi.js → GenericCardRenderer-iuxAero4.js} +1 -1
  34. package/src/assets/web-panel/assets/{Git-Ctd3E5Pe.js → Git-Dw0prdY5.js} +2 -2
  35. package/src/assets/web-panel/assets/{Governance-Ce7dV6aU.js → Governance-DOGqi_uV.js} +1 -1
  36. package/src/assets/web-panel/assets/{Inference-CD1vExIH.js → Inference-BY5oUGGj.js} +1 -1
  37. package/src/assets/web-panel/assets/{KnowledgeGraph-Dn64OdQ7.js → KnowledgeGraph-CcE2EVYX.js} +1 -1
  38. package/src/assets/web-panel/assets/{Logs-PmElVRrT.js → Logs-DyfN4R5w.js} +2 -2
  39. package/src/assets/web-panel/assets/{MarkdownRenderer-BFiVKf5t.js → MarkdownRenderer-Bj62Aq0M.js} +1 -1
  40. package/src/assets/web-panel/assets/{Marketplace-OW4jTXwx.js → Marketplace-CuuuAXUh.js} +1 -1
  41. package/src/assets/web-panel/assets/{McpTools-BEq2Ib4x.js → McpTools-948Fithv.js} +3 -3
  42. package/src/assets/web-panel/assets/{Memory-Can_P2oK.js → Memory-D4PINvyy.js} +2 -2
  43. package/src/assets/web-panel/assets/{MobileBridge-DJ8R-dn3.js → MobileBridge-ECKMaLzX.js} +1 -1
  44. package/src/assets/web-panel/assets/{MobileProjects-B7kV9GOt.js → MobileProjects-CB5MAcvD.js} +1 -1
  45. package/src/assets/web-panel/assets/{Mtc-BfxamolS.js → Mtc-BRzIM3HJ.js} +4 -4
  46. package/src/assets/web-panel/assets/{MtcAudit-DHtuv7av.js → MtcAudit-CGeAXJGn.js} +2 -2
  47. package/src/assets/web-panel/assets/{Multisig-DLkLpvxc.js → Multisig-C_qJ-8K-.js} +3 -3
  48. package/src/assets/web-panel/assets/{NLProgramming-u4XtJTIt.js → NLProgramming-DAEyCn7T.js} +1 -1
  49. package/src/assets/web-panel/assets/{Notes-BwuuPJLS.js → Notes-DmD3MEec.js} +3 -3
  50. package/src/assets/web-panel/assets/{NotificationSettings-HEeu-E9v.js → NotificationSettings-Cv4Q3VC9.js} +1 -1
  51. package/src/assets/web-panel/assets/OrderTableRenderer-BNlpaFjH.js +1 -0
  52. package/src/assets/web-panel/assets/{Organization-Yh-czs3b.js → Organization-DqAFdz6p.js} +4 -4
  53. package/src/assets/web-panel/assets/{Overflow-DmE8mYVM.js → Overflow-8Ye9cIcE.js} +1 -1
  54. package/src/assets/web-panel/assets/{P2P-CWVck8WN.js → P2P-755SfHoJ.js} +2 -2
  55. package/src/assets/web-panel/assets/{PdhVaultBrowser-DgFqekod.js → PdhVaultBrowser-CgZLiucX.js} +4 -4
  56. package/src/assets/web-panel/assets/{Permissions-BtJBVOHV.js → Permissions-C-vFF_rL.js} +3 -3
  57. package/src/assets/web-panel/assets/{PersonalDataHub-6VBObXzd.js → PersonalDataHub-Diz1oXM3.js} +5 -5
  58. package/src/assets/web-panel/assets/{Pipeline-D222FmqY.js → Pipeline-D4kIzsZG.js} +1 -1
  59. package/src/assets/web-panel/assets/{Privacy-Bi9FMikp.js → Privacy-QKLkSAUH.js} +1 -1
  60. package/src/assets/web-panel/assets/{ProjectInit-Bo52H47H.js → ProjectInit-I0S9o_RT.js} +2 -2
  61. package/src/assets/web-panel/assets/{ProjectSettings-BPkesfOc.js → ProjectSettings-DdgV3-Ho.js} +2 -2
  62. package/src/assets/web-panel/assets/{Projects-GynohSFX.js → Projects-BJHHegtj.js} +1 -1
  63. package/src/assets/web-panel/assets/{Providers-DVdMg04n.js → Providers-uVa1zfbS.js} +1 -1
  64. package/src/assets/web-panel/assets/{QrScannerModal-DqJCb595.js → QrScannerModal-YLVpOChR.js} +1 -1
  65. package/src/assets/web-panel/assets/{QuickAsk-J7loQbXi.js → QuickAsk-535AYH61.js} +1 -1
  66. package/src/assets/web-panel/assets/{Recommend-BI5aURVc.js → Recommend-C_P6eNSw.js} +1 -1
  67. package/src/assets/web-panel/assets/{RemoteSession-BN2sqGvz.js → RemoteSession-EXH1SbNj.js} +2 -2
  68. package/src/assets/web-panel/assets/{Reputation-BGOND-Fi.js → Reputation-Cxc7d3eU.js} +1 -1
  69. package/src/assets/web-panel/assets/{Row-77dfwaUk.js → Row-EDqJy-wS.js} +1 -1
  70. package/src/assets/web-panel/assets/{RssFeed-FtBAxS3g.js → RssFeed-C03Xeg9_.js} +2 -2
  71. package/src/assets/web-panel/assets/{Search-BaYVLFb7.js → Search-DsIga9DK.js} +1 -1
  72. package/src/assets/web-panel/assets/{Security-LE3Vv6ab.js → Security-DgArMFc-.js} +3 -3
  73. package/src/assets/web-panel/assets/{Services-C5pP-Whz.js → Services-MooDpHBP.js} +2 -2
  74. package/src/assets/web-panel/assets/{Skeleton-CLqKUVsF.js → Skeleton-B10P1Dr6.js} +1 -1
  75. package/src/assets/web-panel/assets/{Skills-BPjN0SX5.js → Skills-DHLHEkLl.js} +1 -1
  76. package/src/assets/web-panel/assets/{Sla-14jD70kg.js → Sla-D4RT7d4g.js} +1 -1
  77. package/src/assets/web-panel/assets/{SpeechSettings-Dr9ij42W.js → SpeechSettings-D8u6F-LV.js} +1 -1
  78. package/src/assets/web-panel/assets/{SyncSettings-BzLHP7B8.js → SyncSettings-4nvNzRq8.js} +2 -2
  79. package/src/assets/web-panel/assets/{Tasks-YqV9b0rV.js → Tasks-CmCb8zNO.js} +1 -1
  80. package/src/assets/web-panel/assets/{Templates-CxxAE4PK.js → Templates-CzESIa21.js} +1 -1
  81. package/src/assets/web-panel/assets/{Tenant-CRb3PcKJ.js → Tenant-Ch_N3p4d.js} +1 -1
  82. package/src/assets/web-panel/assets/{Terminal-CTzPpBaP.js → Terminal-BZccUf_X.js} +2 -2
  83. package/src/assets/web-panel/assets/{TimelineRenderer-DjFUj_hy.js → TimelineRenderer-FrKcNy_3.js} +1 -1
  84. package/src/assets/web-panel/assets/{Tokens-Bbb8tPvx.js → Tokens-4xvLpXfD.js} +1 -1
  85. package/src/assets/web-panel/assets/{Trigger-CSeWGM0W.js → Trigger-84UjyxXd.js} +1 -1
  86. package/src/assets/web-panel/assets/{Trust-JgESMBo3.js → Trust-M6UtHnji.js} +1 -1
  87. package/src/assets/web-panel/assets/{UkeySign-CiObLk0T.js → UkeySign-L_xEgtCg.js} +1 -1
  88. package/src/assets/web-panel/assets/{VideoEditing-CFEZaQ2x.js → VideoEditing-BLJCX9ru.js} +1 -1
  89. package/src/assets/web-panel/assets/{Wallet-DR8ZGDNn.js → Wallet-DwL6uJCj.js} +4 -4
  90. package/src/assets/web-panel/assets/{WebAuthn-DxZukvu7.js → WebAuthn-Bmn9pdzz.js} +5 -5
  91. package/src/assets/web-panel/assets/{WorkflowEditor-CKgSZQwn.js → WorkflowEditor-DSsZ5xG1.js} +1 -1
  92. package/src/assets/web-panel/assets/{chat-CTxEQE66.js → chat--FGNUaa8.js} +1 -1
  93. package/src/assets/web-panel/assets/{colors-CAjKMUu3.js → colors-DeuwNdqX.js} +1 -1
  94. package/src/assets/web-panel/assets/{compact-item-BXuz49at.js → compact-item-I4XKxRFU.js} +1 -1
  95. package/src/assets/web-panel/assets/{createContext-CFN_Hwr9.js → createContext-RoD2p5Ba.js} +1 -1
  96. package/src/assets/web-panel/assets/devWarning-ctnml4IW.js +1 -0
  97. package/src/assets/web-panel/assets/{hasIn-BwoSBSfP.js → hasIn-BsvyddUM.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-CB3kVd9c.js → index-0tRU1Sv-.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-o9DpkZKf.js → index-4xHc2WjT.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-BmQITjMU.js → index-B8-eGLN9.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-DY-gBSm8.js → index-BS_uqSTa.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-F2E5RCwz.js → index-BYEVBlCl.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-CF9lWi1o.js → index-BcBM065G.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-Bu2P6u8m.js → index-BnrL4s-3.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-Dv7V2kg6.js → index-BrZPb0On.js} +1 -1
  106. package/src/assets/web-panel/assets/index-C7PN8mh1.js +1 -0
  107. package/src/assets/web-panel/assets/{index-DViK2bkv.js → index-CBazK4-7.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-BmXpdcHI.js → index-CPS3zv1c.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-Bqv_Cray.js → index-CSrZiiAs.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-B7kp-zRE.js → index-CVwZMt9Z.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-B0QbLlWn.js → index-CdgKZYgm.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-DjF5BOZx.js → index-CesTu01s.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-CSmFby3Q.js → index-CiHlSuMl.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-B2o_BBjg.js → index-CsLVac9n.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-CehdwJ_Q.js → index-D1ONyBTW.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-Bj4hIiLW.js → index-D4IZsKbF.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-_ZtCyUdz.js → index-D4P4vpmv.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-B9yR7zqr.js → index-D6J8dz7X.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-u9_DM3ZC.js → index-DChy2sHE.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-C8er4W9u.js → index-DKUCl_Lk.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-BK4ftQ4d.js → index-DRluW3_r.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-B2tEnBPx.js → index-DWUmhNO-.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-IY9bd5az.js → index-DXnpVGG3.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-Cp5y7lX_.js → index-DYOpAS6-.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-T3MTE6jB.js → index-DiH-3cR2.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-DxunxaTw.js → index-DlEfwgzr.js} +1 -1
  127. package/src/assets/web-panel/assets/index-KnbBJAO-.js +1 -0
  128. package/src/assets/web-panel/assets/{index-DTX9CJPx.js → index-R4St_zjR.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-Tz5dheZa.js → index-ScgoDU9V.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-DmkbAADP.js → index-UWdT_lty.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-Bw9s2d3c.js → index-VAlor744.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-CN53dE_u.js → index-Wco_uvRo.js} +1 -1
  133. package/src/assets/web-panel/assets/{index-DpdDnZX_.js → index-ZgFED_Zd.js} +1 -1
  134. package/src/assets/web-panel/assets/{index-IahILygB.js → index-jaHeti4i.js} +3 -3
  135. package/src/assets/web-panel/assets/{index-Cgk0YEiq.js → index-rJDabtw4.js} +1 -1
  136. package/src/assets/web-panel/assets/{index-t2Ch_JKn.js → index-vRiGKIP0.js} +1 -1
  137. package/src/assets/web-panel/assets/{initDefaultProps-BoiGJDoO.js → initDefaultProps-BHT0PacY.js} +1 -1
  138. package/src/assets/web-panel/assets/{motion-5eL4E0pA.js → motion-CBYsMtsC.js} +1 -1
  139. package/src/assets/web-panel/assets/{move-DjggDi_1.js → move-DnHfFV4K.js} +1 -1
  140. package/src/assets/web-panel/assets/{mtc-parser-Ce8Vo2T3.js → mtc-parser-DfGkRYrx.js} +1 -1
  141. package/src/assets/web-panel/assets/{omit-D1yOBaO2.js → omit-SjLcPQA9.js} +1 -1
  142. package/src/assets/web-panel/assets/{pickAttrs-8NLceQe8.js → pickAttrs-CCZHF4ep.js} +1 -1
  143. package/src/assets/web-panel/assets/{placementArrow-CsIdBRmQ.js → placementArrow-DjCGn2sJ.js} +1 -1
  144. package/src/assets/web-panel/assets/{responsiveObserve-GM5NE8En.js → responsiveObserve-BCFCl2on.js} +1 -1
  145. package/src/assets/web-panel/assets/{slide-44yj3u49.js → slide-DsfmuIZu.js} +1 -1
  146. package/src/assets/web-panel/assets/{statusUtils-B8tqtWcX.js → statusUtils-hPKuJUia.js} +1 -1
  147. package/src/assets/web-panel/assets/{styleChecker-NhDPBbyB.js → styleChecker-DOXKH7Kf.js} +1 -1
  148. package/src/assets/web-panel/assets/{useFlexGapSupport-C8Qz1GtN.js → useFlexGapSupport-B_G7yqio.js} +1 -1
  149. package/src/assets/web-panel/assets/{useFs-ClUv4kih.js → useFs-BXOTOm2l.js} +1 -1
  150. package/src/assets/web-panel/assets/{usePersonalDataHub-BwkOVEh6.js → usePersonalDataHub-CRvie3g7.js} +1 -1
  151. package/src/assets/web-panel/assets/{vnode--gMF33R0.js → vnode-D9_zMmww.js} +1 -1
  152. package/src/assets/web-panel/assets/{zoom-DXg3TqOP.js → zoom-C4tW03qI.js} +1 -1
  153. package/src/assets/web-panel/index.html +1 -1
  154. package/src/data/changelog.json +52 -0
  155. package/src/lib/artifact-store.js +51 -3
  156. package/src/lib/bounded-artifact-file-read.js +131 -0
  157. package/src/lib/evolution/evolution-artifact-ports.js +235 -129
  158. package/src/lib/evolution/evolution-eval-cohort-enrollment.js +713 -47
  159. package/src/lib/evolution/evolution-eval-gate.js +146 -0
  160. package/src/lib/evolution/evolution-eval-launch-admission.js +168 -90
  161. package/src/lib/evolution/evolution-eval-ledger-capture.js +50 -0
  162. package/src/lib/evolution/evolution-eval-readonly-audit.js +106 -0
  163. package/src/lib/evolution/evolution-ledger-file-backend.js +20 -0
  164. package/src/lib/evolution/evolution-ledger-ports.js +59 -27
  165. package/src/lib/evolution/evolution-ledger-v2-journal.js +55 -18
  166. package/src/lib/evolution/evolution-workbench-file-resources.js +19 -1
  167. package/src/lib/evolution/rrsi-cohort-registration.js +275 -0
  168. package/src/lib/evolution/rrsi-contracts.js +742 -0
  169. package/src/lib/evolution/rrsi-data.js +196 -0
  170. package/src/lib/evolution/rrsi-evaluation-adapter.js +275 -0
  171. package/src/lib/evolution/rrsi-evaluation-variants.js +267 -0
  172. package/src/lib/evolution/rrsi-group-statistics.js +553 -0
  173. package/src/lib/evolution/rrsi-history-ledger-adapter.js +3286 -0
  174. package/src/lib/evolution/rrsi-installation-route-contracts.js +275 -0
  175. package/src/lib/evolution/rrsi-installation-route-reader.js +282 -0
  176. package/src/lib/evolution/rrsi-native-batch-evidence.js +520 -0
  177. package/src/lib/evolution/rrsi-native-eval-row-collector.js +538 -0
  178. package/src/lib/evolution/rrsi-native-evaluation-batch.js +547 -0
  179. package/src/lib/evolution/rrsi-native-evaluation-plan.js +431 -0
  180. package/src/lib/evolution/rrsi-native-group-statistics-plan.js +121 -0
  181. package/src/lib/evolution/rrsi-native-group-statistics.js +482 -0
  182. package/src/lib/evolution/rrsi-native-quality-receipt-contracts.js +321 -0
  183. package/src/lib/evolution/rrsi-native-quality-receipt.js +256 -0
  184. package/src/lib/evolution/rrsi-native-statistics-protocol.js +330 -0
  185. package/src/lib/evolution/rrsi-observed-text-index.js +978 -0
  186. package/src/lib/evolution/rrsi-parent-binding.js +290 -0
  187. package/src/lib/evolution/rrsi-pm-execution-bridge.js +500 -0
  188. package/src/lib/evolution/rrsi-pm-training-mapping.js +134 -0
  189. package/src/lib/evolution/rrsi-preparation-contracts.js +213 -0
  190. package/src/lib/evolution/rrsi-registry-history-binding.js +193 -0
  191. package/src/lib/evolution/rrsi-registry-runtime-policy.js +648 -0
  192. package/src/lib/evolution/rrsi-registry-store-policy.js +1271 -0
  193. package/src/lib/evolution/rrsi-runtime-composition.js +79 -0
  194. package/src/lib/evolution/rrsi-selector.js +434 -0
  195. package/src/lib/evolution/rrsi-statistics-simulation.js +354 -0
  196. package/src/lib/evolution/rrsi-tenant-index-anchor-contracts.js +223 -0
  197. package/src/lib/evolution/rrsi-tenant-index-anchor-history.js +157 -0
  198. package/src/lib/evolution/skill-candidate-registry.js +216 -29
  199. package/src/lib/evolution/skill-registry-maintenance.js +80 -0
  200. package/src/lib/evolution/skill-registry-writer-control.js +138 -0
  201. package/src/lib/evolution/skill-release-registry.js +414 -169
  202. package/src/lib/formal-quality-eval-runtime.js +2 -14
  203. package/src/lib/goal-store.js +225 -16
  204. package/src/lib/process-execution-broker/windows-native-evaluator-capabilities.js +291 -30
  205. package/src/lib/record-replay/skill-recorder.js +38 -3
  206. package/src/lib/remote-read-loop-guard.js +227 -24
  207. package/src/lib/scheduler-kernel/authority-resolver.js +12 -163
  208. package/src/lib/scheduler-kernel/contract.js +27 -414
  209. package/src/lib/scheduler-kernel/runtime.js +21 -823
  210. package/src/lib/scheduler-kernel/service.js +11 -328
  211. package/src/lib/scheduler-kernel/source-locator-path.js +7 -142
  212. package/src/lib/scheduler-kernel/store.js +67 -5931
  213. package/src/lib/secure-fs.js +16 -1314
  214. package/src/lib/task-progress-tracker.js +6 -1
  215. package/src/lib/with-file-lock.js +122 -20
  216. package/src/runtime/agent-core.js +71 -23
  217. package/src/assets/web-panel/assets/ChatBubbleRenderer-fcc_Tvqu.js +0 -1
  218. package/src/assets/web-panel/assets/OrderTableRenderer-BtvN-Qwh.js +0 -1
  219. package/src/assets/web-panel/assets/devWarning-CfB8DxT2.js +0 -1
  220. package/src/assets/web-panel/assets/index-CCsRfd0k.js +0 -1
  221. 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) && result.exitCode !== 0) ||
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 (!held || typeof pendingPath !== "string" || !pendingPath) {
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 = releaseOwnedDirectory(
226
- _fs,
227
- lockDir,
228
- owner,
229
- isOwnerAlive,
230
- releasePublished,
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
- _sleep(yieldAfterReleaseMs);
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
- _sleep(Math.min(remaining, exponential + jitter));
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
- { role: "system", content: PR_INVESTIGATION_EXIT_GUIDANCE },
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
- "PR investigation stopped after repeated exploration without an actionable outcome; the task is incomplete. " +
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 = "CC_AGENT_PR_INVESTIGATION_STALLED";
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
- "PR investigation stopped without completing the task.\n\n" +
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 { type: "run-ended", runId, reason: "pr-investigation-stalled" };
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
- remoteReadLoopGuard.record(call.function.name, toolResult, toolArgs);
16073
- readFileLoopGuard.record(
16111
+ const taskAdvanced = taskProgressTracker.record(
16074
16112
  call.function.name,
16075
16113
  toolResult,
16076
- taskProgressTracker.record(
16077
- call.function.name,
16078
- toolResult,
16079
- toolArgs,
16080
- runId,
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
- remoteReadLoopGuard.record(toolName, toolResult, toolArgs);
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
- taskProgressTracker.record(toolName, toolResult, toolArgs, runId),
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};