chainlesschain 0.166.74 → 0.166.77

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 (166) hide show
  1. package/README.md +4 -2
  2. package/package.json +1 -1
  3. package/src/assets/web-panel/assets/{AIOps-BlIvP3k1.js → AIOps-CpiCBhRh.js} +1 -1
  4. package/src/assets/web-panel/assets/{ActionButton-DYF7atSV.js → ActionButton-CnU-Xvx-.js} +1 -1
  5. package/src/assets/web-panel/assets/{Analytics-LZYaYek6.js → Analytics-BJW-CNtf.js} +3 -3
  6. package/src/assets/web-panel/assets/{AppLayout-BJxrjNbj.js → AppLayout-UFQJL3G9.js} +5 -5
  7. package/src/assets/web-panel/assets/{Artifacts-gEDhxhmE.js → Artifacts-Dr_IUDoY.js} +1 -1
  8. package/src/assets/web-panel/assets/{Audit-B0MR950Q.js → Audit-aglWo6rr.js} +1 -1
  9. package/src/assets/web-panel/assets/{BackgroundAgents-3e6Os_Kl.js → BackgroundAgents-Dm_TCiXC.js} +1 -1
  10. package/src/assets/web-panel/assets/{Backup-DB_X8KUg.js → Backup-DUdX4-gA.js} +1 -1
  11. package/src/assets/web-panel/assets/{BaseInput-DTNcvNeG.js → BaseInput-BTcLjy1o.js} +1 -1
  12. package/src/assets/web-panel/assets/{Chat-SnqdA62j.js → Chat-Bhy9qZrl.js} +5 -5
  13. package/src/assets/web-panel/assets/{ChatBubbleRenderer-BaiWNH_V.js → ChatBubbleRenderer-D0WrJQaQ.js} +1 -1
  14. package/src/assets/web-panel/assets/{Checkbox-Dj0O4dyP.js → Checkbox-CblrPa21.js} +1 -1
  15. package/src/assets/web-panel/assets/{Codegen-BeelW3dx.js → Codegen-SEAHzOlr.js} +1 -1
  16. package/src/assets/web-panel/assets/{Col-BmstiyBM.js → Col-DJz8iFOR.js} +1 -1
  17. package/src/assets/web-panel/assets/{Community-CrbmFk3f.js → Community-RufKhcQt.js} +1 -1
  18. package/src/assets/web-panel/assets/{Compact-DCg5ZPIw.js → Compact-Dlifx08U.js} +1 -1
  19. package/src/assets/web-panel/assets/{Compliance-B3sajhq7.js → Compliance-DdhQWcHh.js} +1 -1
  20. package/src/assets/web-panel/assets/{Cowork-DWcdvrDK.js → Cowork-BLNn6oOm.js} +4 -4
  21. package/src/assets/web-panel/assets/{Cron-Bjwp_NDf.js → Cron-Dv-JWY2d.js} +2 -2
  22. package/src/assets/web-panel/assets/{Crosschain-BXTLC9o8.js → Crosschain-k7Pz7O-b.js} +1 -1
  23. package/src/assets/web-panel/assets/{DID-Di62M46b.js → DID-C_10syUW.js} +2 -2
  24. package/src/assets/web-panel/assets/{Dashboard-BQED8Rkt.js → Dashboard-CMyH6Szx.js} +2 -2
  25. package/src/assets/web-panel/assets/{Dropdown-DEf9VYaj.js → Dropdown-DjmD2Saa.js} +1 -1
  26. package/src/assets/web-panel/assets/{EmailListRenderer-DhFpPMAM.js → EmailListRenderer-36_IRUSo.js} +1 -1
  27. package/src/assets/web-panel/assets/{EvolutionSettings-BOqmzkpS.js → EvolutionSettings-CmtU0XmM.js} +1 -1
  28. package/src/assets/web-panel/assets/{FamilyGuardDashboard-BxBnJ4fe.js → FamilyGuardDashboard-DEgf9kyP.js} +1 -1
  29. package/src/assets/web-panel/assets/{Federation-BN9Q8nsZ.js → Federation-DGO1wQls.js} +1 -1
  30. package/src/assets/web-panel/assets/{FormItemContext-CGeqFEd-.js → FormItemContext-Doj1FmKW.js} +1 -1
  31. package/src/assets/web-panel/assets/{GenericCardRenderer-DElmWQTc.js → GenericCardRenderer-GzOU27iT.js} +1 -1
  32. package/src/assets/web-panel/assets/{Git-BHBSgKck.js → Git-Dd7D1EDK.js} +2 -2
  33. package/src/assets/web-panel/assets/{Governance-Breo3NTU.js → Governance-6IY8LcjI.js} +1 -1
  34. package/src/assets/web-panel/assets/{Inference-CCABy4E0.js → Inference-BB9gl8q1.js} +1 -1
  35. package/src/assets/web-panel/assets/{KnowledgeGraph-B6_ryn-X.js → KnowledgeGraph-CeCed5wd.js} +1 -1
  36. package/src/assets/web-panel/assets/{Logs-CkmJjJok.js → Logs-CYOeHuaI.js} +2 -2
  37. package/src/assets/web-panel/assets/{MarkdownRenderer-DQEQBaRu.js → MarkdownRenderer-Bk8Zqc2R.js} +1 -1
  38. package/src/assets/web-panel/assets/{Marketplace-iip65jxv.js → Marketplace-D-_xgHgM.js} +1 -1
  39. package/src/assets/web-panel/assets/{McpTools-DDwp_QLb.js → McpTools-NnaUTF5t.js} +3 -3
  40. package/src/assets/web-panel/assets/{Memory-2ZmNDRkC.js → Memory-CndN9pMt.js} +2 -2
  41. package/src/assets/web-panel/assets/{MobileBridge-C6HilwZl.js → MobileBridge-BXblFmhY.js} +1 -1
  42. package/src/assets/web-panel/assets/{MobileProjects-BeMtYRhx.js → MobileProjects-CC26Dm2k.js} +1 -1
  43. package/src/assets/web-panel/assets/{Mtc-Bp-FEcoo.js → Mtc-BhaqWCiW.js} +2 -2
  44. package/src/assets/web-panel/assets/{MtcAudit-DNdkTCe5.js → MtcAudit-D6fktM2w.js} +5 -5
  45. package/src/assets/web-panel/assets/{Multisig-PnKg2_Eo.js → Multisig-CFvahz7s.js} +3 -3
  46. package/src/assets/web-panel/assets/{NLProgramming-DDp4lZeG.js → NLProgramming-Co73Ivya.js} +1 -1
  47. package/src/assets/web-panel/assets/{Notes-DEjFktcO.js → Notes-B4g33L1o.js} +4 -4
  48. package/src/assets/web-panel/assets/{NotificationSettings-FR8fJDAn.js → NotificationSettings-lXd17EbN.js} +1 -1
  49. package/src/assets/web-panel/assets/{OrderTableRenderer-Cyc-XI0L.js → OrderTableRenderer-BiOB0GIi.js} +1 -1
  50. package/src/assets/web-panel/assets/{Organization-DNW2E_JU.js → Organization-JQ7_wQIA.js} +4 -4
  51. package/src/assets/web-panel/assets/{Overflow-BHfd6wk6.js → Overflow-gwgJgozQ.js} +1 -1
  52. package/src/assets/web-panel/assets/{P2P-COIkaXH4.js → P2P-D9L_0gie.js} +2 -2
  53. package/src/assets/web-panel/assets/{PdhVaultBrowser-DuRP0UeX.js → PdhVaultBrowser-CbOPsFE9.js} +3 -3
  54. package/src/assets/web-panel/assets/{Permissions-BfVRGMy8.js → Permissions-Cz42HNQf.js} +4 -4
  55. package/src/assets/web-panel/assets/{PersonalDataHub-BWYjO6Aa.js → PersonalDataHub-DjorYtrF.js} +5 -5
  56. package/src/assets/web-panel/assets/{Pipeline-C0e0fPBW.js → Pipeline-DyWPhmm5.js} +1 -1
  57. package/src/assets/web-panel/assets/{Privacy-CnId4Jv-.js → Privacy-DyfLMl2j.js} +1 -1
  58. package/src/assets/web-panel/assets/{ProjectInit-CYf1grXg.js → ProjectInit-CyqDx1OE.js} +2 -2
  59. package/src/assets/web-panel/assets/{ProjectSettings-HsXgJdiH.js → ProjectSettings-DsBw0Csy.js} +2 -2
  60. package/src/assets/web-panel/assets/{Projects-Bi0r9QcC.js → Projects-CRaSI25Z.js} +1 -1
  61. package/src/assets/web-panel/assets/{Providers-B-Tu_-_4.js → Providers-CCI_klN-.js} +1 -1
  62. package/src/assets/web-panel/assets/{QrScannerModal-CPDqYT2F.js → QrScannerModal-DNsnlDdS.js} +1 -1
  63. package/src/assets/web-panel/assets/{QuickAsk-Df6qcjXy.js → QuickAsk-B9r2iaee.js} +1 -1
  64. package/src/assets/web-panel/assets/{Recommend-dP6sfGSY.js → Recommend-BJDe03GR.js} +1 -1
  65. package/src/assets/web-panel/assets/{RemoteSession-VAt9-tM3.js → RemoteSession-J7JR3rRo.js} +3 -3
  66. package/src/assets/web-panel/assets/{Reputation-DtRVRiLI.js → Reputation-DR39AJeV.js} +1 -1
  67. package/src/assets/web-panel/assets/{Row-B6Ukqvli.js → Row-Dh77m3NZ.js} +1 -1
  68. package/src/assets/web-panel/assets/{RssFeed-DfVRQMrZ.js → RssFeed-BUdg28nJ.js} +2 -2
  69. package/src/assets/web-panel/assets/{Search-CyncAiqQ.js → Search-BNC7sGhj.js} +1 -1
  70. package/src/assets/web-panel/assets/{Security-DEO7nrkb.js → Security-DISENGI7.js} +3 -3
  71. package/src/assets/web-panel/assets/{Services-CkusQEhN.js → Services-BBBGpJ1-.js} +2 -2
  72. package/src/assets/web-panel/assets/{Skeleton-CbGtO3kc.js → Skeleton-DMcIoIv2.js} +1 -1
  73. package/src/assets/web-panel/assets/{Skills-diOh0gAr.js → Skills-QAyFbI3r.js} +1 -1
  74. package/src/assets/web-panel/assets/{Sla-CIu9Ahak.js → Sla-CSg5wLH7.js} +1 -1
  75. package/src/assets/web-panel/assets/{SpeechSettings-_Nzyi4K9.js → SpeechSettings-DMPxTc5x.js} +1 -1
  76. package/src/assets/web-panel/assets/{SyncSettings-BAOLFlRq.js → SyncSettings-CPG7l30y.js} +2 -2
  77. package/src/assets/web-panel/assets/{Tasks-BpmvL1Eq.js → Tasks-Y1kOVvVL.js} +1 -1
  78. package/src/assets/web-panel/assets/{Templates-Dkr_vRdJ.js → Templates-jt9NagL0.js} +1 -1
  79. package/src/assets/web-panel/assets/{Tenant-kM7lHUFR.js → Tenant-DauuJICx.js} +1 -1
  80. package/src/assets/web-panel/assets/{Terminal-9zfc41aU.js → Terminal-E9rnKeGq.js} +2 -2
  81. package/src/assets/web-panel/assets/{TimelineRenderer-Cg_7j6cj.js → TimelineRenderer-Cc7z2APG.js} +1 -1
  82. package/src/assets/web-panel/assets/{Tokens-Cs1aikaM.js → Tokens-CV0UthRA.js} +1 -1
  83. package/src/assets/web-panel/assets/{Trigger-DKYPJ9gl.js → Trigger-BFcJJGfu.js} +1 -1
  84. package/src/assets/web-panel/assets/{Trust-BFy1Sm8B.js → Trust-BAydbNJA.js} +1 -1
  85. package/src/assets/web-panel/assets/{UkeySign-B31L9NBH.js → UkeySign-DcOS6sqL.js} +1 -1
  86. package/src/assets/web-panel/assets/{VideoEditing-OMmUYdIC.js → VideoEditing-BLHJZvif.js} +1 -1
  87. package/src/assets/web-panel/assets/{Wallet-y3aE7oru.js → Wallet-4QFLKHwW.js} +4 -4
  88. package/src/assets/web-panel/assets/{WebAuthn-C0ICKvpu.js → WebAuthn-BocEOOSj.js} +5 -5
  89. package/src/assets/web-panel/assets/{WorkflowEditor-Cq5UYbr5.js → WorkflowEditor-DCfF7D0B.js} +1 -1
  90. package/src/assets/web-panel/assets/{chat-B1ijaKFv.js → chat-CxvfsYGr.js} +1 -1
  91. package/src/assets/web-panel/assets/{colors-CHkI8PDg.js → colors-KtQB9DmQ.js} +1 -1
  92. package/src/assets/web-panel/assets/{compact-item-1BYvgWEs.js → compact-item-Dx4J6arN.js} +1 -1
  93. package/src/assets/web-panel/assets/{createContext-BGti56u4.js → createContext-Cq0olgzo.js} +1 -1
  94. package/src/assets/web-panel/assets/devWarning-CmgDNkoO.js +1 -0
  95. package/src/assets/web-panel/assets/{hasIn-Cr87Fph1.js → hasIn-Bf9-h3D-.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-CS0MIE2C.js → index-0fi8DIVQ.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-DJjnXDAD.js → index-6dDDSCHD.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-tY479EoQ.js → index-B3xfiItB.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-BjgtiMdY.js → index-B8WuPI-h.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-CQWMHlY7.js → index-BHmdMKYl.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-Bdkrut2A.js → index-BKtQyb2o.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-6Ta8Pg47.js → index-BMcC4cbj.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-BA0FMuDX.js → index-BO6XvO-C.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-B4BSM3BK.js → index-B_8UcDan.js} +1 -1
  105. package/src/assets/web-panel/assets/index-BpIZ2S01.js +1 -0
  106. package/src/assets/web-panel/assets/{index-BkFXPrdx.js → index-Br1mDMfO.js} +1 -1
  107. package/src/assets/web-panel/assets/index-C-VmKuyv.js +1 -0
  108. package/src/assets/web-panel/assets/{index-CkcWhgLB.js → index-C9yaUHm9.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-DzevrmLK.js → index-CK2U_AHi.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-D6g4jxdE.js → index-CaIclw-E.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-CmmSJBNi.js → index-CeYP_kT9.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-BKb16YKp.js → index-Cfsn7N18.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-B1yur8MU.js → index-ClUfSChI.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-1WxCzqYq.js → index-CmQuG0fr.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-BYpqBWlt.js → index-CpO6DKuu.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-DcoI3ENn.js → index-CqnggDos.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-Bni5GodE.js → index-Cy865Hhq.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-CbkGda_k.js → index-Cz7f4Jaq.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-Dam-LB_J.js → index-D2BfSIrn.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-fhpMyq0u.js → index-DBRlZdZj.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-CevUJTXd.js → index-DDAe1UmZ.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-Cvu95WPI.js → index-DFdEDvFn.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-CDTNnQDz.js → index-DI5bRqNG.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-B8Jb_cGt.js → index-DMR-keCL.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-DCkvhzaY.js → index-DQDR-_ai.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-rVnXNFST.js → index-DZWjYfWt.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-Dnp-4yPc.js → index-DfrFNMvz.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-CjBkVrq9.js → index-DnU-dUWd.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-Duv0TfJa.js → index-DsCdl2Od.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-rO6VKJv5.js → index-_FIz-0tp.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-DHJtAEx8.js → index-gt5N6VM_.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-BOjTRSHE.js → index-hSzyoXri.js} +3 -3
  133. package/src/assets/web-panel/assets/{index-CvcpesEZ.js → index-iE9tqEN5.js} +1 -1
  134. package/src/assets/web-panel/assets/{index-C_lEztok.js → index-nmyDOh_b.js} +1 -1
  135. package/src/assets/web-panel/assets/{initDefaultProps-DAGtnwoX.js → initDefaultProps-DvzKJ6o5.js} +1 -1
  136. package/src/assets/web-panel/assets/{motion-02FXBi5C.js → motion-D1yTvmxW.js} +1 -1
  137. package/src/assets/web-panel/assets/{move-BLf7rhzJ.js → move-DxtSIF8K.js} +1 -1
  138. package/src/assets/web-panel/assets/{mtc-parser-Ct6i1vqQ.js → mtc-parser-BDsQgIHY.js} +1 -1
  139. package/src/assets/web-panel/assets/{omit-DKvTU8IT.js → omit-UVBJW8kh.js} +1 -1
  140. package/src/assets/web-panel/assets/{pickAttrs-DqDsKoMe.js → pickAttrs-D4QqtTyX.js} +1 -1
  141. package/src/assets/web-panel/assets/{placementArrow-kae6Cnwx.js → placementArrow-QXmu6vBf.js} +1 -1
  142. package/src/assets/web-panel/assets/{responsiveObserve-DzFM_TQf.js → responsiveObserve-D-PmXO9M.js} +1 -1
  143. package/src/assets/web-panel/assets/{slide-qDjNFPuM.js → slide-CKbGxEZJ.js} +1 -1
  144. package/src/assets/web-panel/assets/{statusUtils-BihSr7G3.js → statusUtils-BbgXPkXm.js} +1 -1
  145. package/src/assets/web-panel/assets/{styleChecker-BzoT0TfJ.js → styleChecker-DOr9rk68.js} +1 -1
  146. package/src/assets/web-panel/assets/{useFlexGapSupport-CjXXcU1j.js → useFlexGapSupport-B2wO2r36.js} +1 -1
  147. package/src/assets/web-panel/assets/{useFs-DrWcbDJ1.js → useFs-SeVGBK34.js} +1 -1
  148. package/src/assets/web-panel/assets/{usePersonalDataHub-DO1oBNTE.js → usePersonalDataHub-DUJBCxjD.js} +1 -1
  149. package/src/assets/web-panel/assets/{vnode-BR6crWko.js → vnode-CF4EYsig.js} +1 -1
  150. package/src/assets/web-panel/assets/{zoom-DmKLfw6W.js → zoom-pRUs5pqI.js} +1 -1
  151. package/src/assets/web-panel/index.html +1 -1
  152. package/src/data/changelog.json +39 -0
  153. package/src/lib/decision-layer/providers.js +84 -9
  154. package/src/lib/decision-layer/runtime.js +86 -49
  155. package/src/lib/direct-model-usage.js +14 -3
  156. package/src/lib/evolution/evolution-eval-child-evidence-ledger-adapter.js +2 -0
  157. package/src/lib/evolution/evolution-eval-cohort-enrollment.js +770 -0
  158. package/src/lib/evolution/evolution-eval-contracts.js +86 -0
  159. package/src/lib/evolution/evolution-eval-gate.js +136 -85
  160. package/src/lib/evolution/evolution-eval-launch-admission.js +505 -0
  161. package/src/lib/evolution/skill-target-matrix-eval.js +84 -3
  162. package/src/lib/with-file-lock.js +81 -16
  163. package/src/runtime/headless-runner.js +8 -0
  164. package/src/assets/web-panel/assets/devWarning-Isft1nEX.js +0 -1
  165. package/src/assets/web-panel/assets/index-B_T9NUk7.js +0 -1
  166. package/src/assets/web-panel/assets/index-DBqUxaat.js +0 -1
@@ -519,7 +519,62 @@ function reclaimLegacyDirectory(_fs, lockDir, stat) {
519
519
  return true;
520
520
  }
521
521
 
522
- function completePublishedRelease(_fs, lockDir, owner, claimant, ownerAlive) {
522
+ function completePublishedRelease(
523
+ _fs,
524
+ lockDir,
525
+ owner,
526
+ claimant,
527
+ ownerAlive,
528
+ ownerBodyFinished = false,
529
+ ) {
530
+ const finishedPath = path.join(
531
+ lockDir,
532
+ `.release-body-finished-${owner.token}`,
533
+ );
534
+ if (ownerBodyFinished) {
535
+ // Publication is already known by the owner. Persist its ended-body proof
536
+ // before reading the release marker: a sharing error on that read must not
537
+ // strand an abandoned staging path behind a still-live owner.
538
+ const ownerPath = path.join(lockDir, "owner.json");
539
+ const current = readOwnerResult(_fs, ownerPath);
540
+ if (
541
+ current.error?.code === "ENOENT" ||
542
+ (current.owner && !sameOwner(current.owner, owner))
543
+ ) {
544
+ return { published: true, completed: true };
545
+ }
546
+ if (current.error) throw current.error;
547
+ try {
548
+ writeOwnerMarker(_fs, finishedPath, owner);
549
+ } catch (error) {
550
+ if (error?.code === "ENOENT") {
551
+ const latest = readOwnerResult(_fs, ownerPath);
552
+ if (
553
+ latest.error?.code === "ENOENT" ||
554
+ (latest.owner && !sameOwner(latest.owner, owner))
555
+ ) {
556
+ return { published: true, completed: true };
557
+ }
558
+ }
559
+ if (error?.code !== "EEXIST") throw error;
560
+ const existing = readOwnerResult(_fs, finishedPath);
561
+ if (existing.error) throw existing.error;
562
+ if (!sameOwner(existing.owner, owner)) {
563
+ throw new Error("Mismatched ended-body release proof");
564
+ }
565
+ }
566
+ // A contender can finish the handoff after the first owner read. Remove
567
+ // only our own proof if its write raced with a replacement directory.
568
+ const latest = readOwnerResult(_fs, ownerPath);
569
+ if (
570
+ latest.error?.code === "ENOENT" ||
571
+ (latest.owner && !sameOwner(latest.owner, owner))
572
+ ) {
573
+ removeOwnMarker(_fs, finishedPath, owner);
574
+ return { published: true, completed: true };
575
+ }
576
+ if (latest.error) throw latest.error;
577
+ }
523
578
  const markerPath = path.join(lockDir, `.release-${owner.token}`);
524
579
  const marker = readOwner(_fs, markerPath);
525
580
  if (!sameOwner(marker, owner)) {
@@ -536,7 +591,9 @@ function completePublishedRelease(_fs, lockDir, owner, claimant, ownerAlive) {
536
591
  marker.releaseAfterPathRemoved &&
537
592
  pathStatus(_fs, marker.releaseAfterPathRemoved) !== "absent"
538
593
  ) {
539
- return { published: true, completed: false };
594
+ if (!sameOwner(readOwner(_fs, finishedPath), owner)) {
595
+ return { published: true, completed: false };
596
+ }
540
597
  }
541
598
  const claimPath = path.join(lockDir, `.release-claim-${owner.token}`);
542
599
  for (;;) {
@@ -602,13 +659,20 @@ function releaseOwnedDirectory(
602
659
  ownerAlive,
603
660
  releaseWasPublished = false,
604
661
  ) {
662
+ if (releaseWasPublished) {
663
+ // A contender can already detach this directory. Never use the direct
664
+ // read-owner -> rename path after publication: it could rename a new
665
+ // owner's lock if a contender completes the handoff between those calls.
666
+ // The exclusive cleanup claim serializes all published-release helpers.
667
+ // The owner's body has ended even when its final commit threw and left
668
+ // the staging path behind. Only this owner may bypass that guard; other
669
+ // contenders must continue waiting until commit or claimed cleanup.
670
+ completePublishedRelease(_fs, lockDir, owner, owner, ownerAlive, true);
671
+ return true;
672
+ }
605
673
  if (!sameOwner(readOwner(_fs, path.join(lockDir, "owner.json")), owner)) {
606
- // Once this exact owner published a guarded handoff, a contender is allowed
607
- // to detach the old directory as soon as the final staging path disappears.
608
- // A missing or replacement lock therefore proves successful release, not
609
- // ownership loss. Without that publication the strict legacy verdict stays
610
- // fail-closed.
611
- return releaseWasPublished;
674
+ // Without a published handoff, missing or replaced ownership fails closed.
675
+ return false;
612
676
  }
613
677
  // Atomically move the exact owned directory out of the acquisition path,
614
678
  // then remove that uniquely-tokened directory. A replacement owner may
@@ -627,7 +691,7 @@ function releaseOwnedDirectory(
627
691
  }
628
692
  return true;
629
693
  } catch (error) {
630
- if (error?.code === "ENOENT") return releaseWasPublished;
694
+ if (error?.code === "ENOENT") return false;
631
695
  // Windows sharing transients fall back to the marker-based release.
632
696
  }
633
697
  }
@@ -635,18 +699,19 @@ function releaseOwnedDirectory(
635
699
  try {
636
700
  writeOwnerMarker(_fs, markerPath, owner);
637
701
  } catch (error) {
638
- if (error?.code === "ENOENT") return releaseWasPublished;
702
+ if (error?.code === "ENOENT") return false;
639
703
  if (error?.code === "EEXIST") {
640
704
  const existing = readOwner(_fs, markerPath);
641
705
  if (!sameOwner(existing, owner)) return false;
642
- return completePublishedRelease(_fs, lockDir, owner, owner, ownerAlive)
643
- .published;
706
+ completePublishedRelease(_fs, lockDir, owner, owner, ownerAlive);
707
+ return true;
644
708
  }
645
709
  throw error;
646
710
  }
647
711
  if (!sameOwner(readOwner(_fs, path.join(lockDir, "owner.json")), owner)) {
648
- removeOwnMarker(_fs, markerPath, owner);
649
- return false;
712
+ // The successful marker write above already handed release to contenders.
713
+ // A replacement owner is therefore a completed handoff, not lock loss.
714
+ return true;
650
715
  }
651
716
  if (typeof _fs.renameSync === "function") {
652
717
  // After publishing the marker, use the same exclusive claim protocol as a
@@ -657,8 +722,8 @@ function releaseOwnedDirectory(
657
722
  // contender may win the cleanup claim before this owner does; that is a
658
723
  // successful release, not lost ownership, because every acquirer must
659
724
  // complete or wait behind the published marker before entering its body.
660
- return completePublishedRelease(_fs, lockDir, owner, owner, ownerAlive)
661
- .published;
725
+ completePublishedRelease(_fs, lockDir, owner, owner, ownerAlive);
726
+ return true;
662
727
  }
663
728
  _fs.rmSync(lockDir, { recursive: true, force: true });
664
729
  return true;
@@ -2443,6 +2443,13 @@ async function runAgentHeadlessInWorkspace(
2443
2443
  const skillDecisionOptions = resolveHeadlessSkillDecisionOptions(options);
2444
2444
  let skillDecisionRuntime = null;
2445
2445
  if (skillDecisionOptions.mode !== "off") {
2446
+ const previousUnknownDecisionUsage = store.findLatestEvent(
2447
+ sessionId,
2448
+ "model_usage_unknown",
2449
+ (event) =>
2450
+ typeof event?.data?.operationId === "string" &&
2451
+ event.data.operationId.startsWith("decision:"),
2452
+ );
2446
2453
  const decisionProvider =
2447
2454
  deps.decisionProvider ||
2448
2455
  createDecisionProvider({
@@ -2469,6 +2476,7 @@ async function runAgentHeadlessInWorkspace(
2469
2476
  observe: (observation) =>
2470
2477
  persistDecisionEvent("skill_decision_observation", observation),
2471
2478
  sessionBudget: options.sessionBudget || null,
2479
+ initialUsageUnknown: previousUnknownDecisionUsage != null,
2472
2480
  timeoutMs: skillDecisionOptions.timeoutMs,
2473
2481
  });
2474
2482
  }
@@ -1 +0,0 @@
1
- import{Q as r}from"./index-BOjTRSHE.js";const o=((n,a,e)=>{r(n,`[ant-design-vue: ${a}] ${e}`)});export{o as d};
@@ -1 +0,0 @@
1
- import{C as o}from"./Col-BmstiyBM.js";import{a0 as t}from"./index-BOjTRSHE.js";import"./vendor-Bn1JzzAn.js";import"./index-BA0FMuDX.js";import"./icons-DG5UD-6K.js";const s=t(o);export{s as default};
@@ -1 +0,0 @@
1
- import{A as o}from"./Row-B6Ukqvli.js";import{a0 as t}from"./index-BOjTRSHE.js";import"./vendor-Bn1JzzAn.js";import"./responsiveObserve-DzFM_TQf.js";import"./useFlexGapSupport-CjXXcU1j.js";import"./styleChecker-BzoT0TfJ.js";import"./index-BA0FMuDX.js";import"./icons-DG5UD-6K.js";const l=t(o);export{l as default};