chainlesschain 0.166.130 → 0.166.131

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 (466) hide show
  1. package/README.md +20 -4
  2. package/package.json +2 -2
  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/.build-hash +1 -1
  6. package/src/assets/web-panel/assets/AIOps-CHItp4vg.js +1 -0
  7. package/src/assets/web-panel/assets/AIOps-Cchx1iXI.css +1 -0
  8. package/src/assets/web-panel/assets/{ActionButton-Dzv1ReHF.js → ActionButton-nhMNWW_d.js} +1 -1
  9. package/src/assets/web-panel/assets/Analytics-DRc81BBI.js +3 -0
  10. package/src/assets/web-panel/assets/Analytics-Dr-1kvaM.css +1 -0
  11. package/src/assets/web-panel/assets/AppLayout-BTBIIl1e.css +1 -0
  12. package/src/assets/web-panel/assets/AppLayout-CVt7HMkp.js +3 -0
  13. package/src/assets/web-panel/assets/Artifacts-BuJgG5jf.js +1 -0
  14. package/src/assets/web-panel/assets/Artifacts-Dohtjyfl.css +1 -0
  15. package/src/assets/web-panel/assets/Audit-DDnViLtj.css +1 -0
  16. package/src/assets/web-panel/assets/Audit-msNg0aH-.js +1 -0
  17. package/src/assets/web-panel/assets/BackgroundAgents-BpcV8yWC.js +1 -0
  18. package/src/assets/web-panel/assets/BackgroundAgents-CH3Uc9sF.css +1 -0
  19. package/src/assets/web-panel/assets/Backup-CYh10zO3.css +1 -0
  20. package/src/assets/web-panel/assets/Backup-P53DADwG.js +1 -0
  21. package/src/assets/web-panel/assets/BaseInput-DFxT2yWN.js +1 -0
  22. package/src/assets/web-panel/assets/Chat-B5JvvQJb.css +1 -0
  23. package/src/assets/web-panel/assets/Chat-BXoHisHW.js +7 -0
  24. package/src/assets/web-panel/assets/ChatBubbleRenderer-CO908iBt.css +1 -0
  25. package/src/assets/web-panel/assets/ChatBubbleRenderer-DMGtSdDx.js +1 -0
  26. package/src/assets/web-panel/assets/{Checkbox-B5uzaLLP.js → Checkbox-B4g_ckJq.js} +1 -1
  27. package/src/assets/web-panel/assets/Codegen-BLP7id2a.css +1 -0
  28. package/src/assets/web-panel/assets/Codegen-C6SSSOfp.js +1 -0
  29. package/src/assets/web-panel/assets/{Col-D3I2kUGu.js → Col-IO1NEUYL.js} +1 -1
  30. package/src/assets/web-panel/assets/Community-C2RejeOY.css +1 -0
  31. package/src/assets/web-panel/assets/Community-CdEBl93F.js +1 -0
  32. package/src/assets/web-panel/assets/{Compact-5GigOmb8.js → Compact-DYs0a9k7.js} +1 -1
  33. package/src/assets/web-panel/assets/Compliance-BPnk7948.js +1 -0
  34. package/src/assets/web-panel/assets/Compliance-DOys4Ov1.css +1 -0
  35. package/src/assets/web-panel/assets/Cowork-DsOst4XK.css +1 -0
  36. package/src/assets/web-panel/assets/Cowork-VLOTGbza.js +6 -0
  37. package/src/assets/web-panel/assets/Cron-_9GgQLJo.js +2 -0
  38. package/src/assets/web-panel/assets/Crosschain-B21yn0qy.js +1 -0
  39. package/src/assets/web-panel/assets/Crosschain-C7Le4Pte.css +1 -0
  40. package/src/assets/web-panel/assets/DID-BX6k3jZi.css +1 -0
  41. package/src/assets/web-panel/assets/DID-mBeDgRZ7.js +2 -0
  42. package/src/assets/web-panel/assets/Dashboard-BckYYzhP.js +3 -0
  43. package/src/assets/web-panel/assets/Dashboard-MFDcsVcM.css +1 -0
  44. package/src/assets/web-panel/assets/Dropdown-DEedqFiE.js +1 -0
  45. package/src/assets/web-panel/assets/EmailListRenderer-CMs0k9TB.js +1 -0
  46. package/src/assets/web-panel/assets/EmailListRenderer-CVJ1j3Ll.css +1 -0
  47. package/src/assets/web-panel/assets/EvolutionSettings-B00Qd0fN.js +1 -0
  48. package/src/assets/web-panel/assets/EvolutionSettings-BnQ91YHJ.css +1 -0
  49. package/src/assets/web-panel/assets/FamilyGuardDashboard-Df-D09Q4.css +1 -0
  50. package/src/assets/web-panel/assets/FamilyGuardDashboard-DxMTAMa8.js +1 -0
  51. package/src/assets/web-panel/assets/Federation-B-UZw0LO.js +1 -0
  52. package/src/assets/web-panel/assets/Federation-CgmfLbx1.css +1 -0
  53. package/src/assets/web-panel/assets/FormItemContext-CkafazEw.js +1 -0
  54. package/src/assets/web-panel/assets/GenericCardRenderer-DEUG25ZJ.js +1 -0
  55. package/src/assets/web-panel/assets/GenericCardRenderer-DtJFcJYl.css +1 -0
  56. package/src/assets/web-panel/assets/Git-D7dr9oz9.js +2 -0
  57. package/src/assets/web-panel/assets/{Git-BdHhxBWR.css → Git-DPuaGtg7.css} +1 -1
  58. package/src/assets/web-panel/assets/Governance-BoipmXaM.css +1 -0
  59. package/src/assets/web-panel/assets/Governance-DKlUJ1wg.js +1 -0
  60. package/src/assets/web-panel/assets/Inference-BJKqplap.js +1 -0
  61. package/src/assets/web-panel/assets/Inference-BWxYJF9-.css +1 -0
  62. package/src/assets/web-panel/assets/KnowledgeGraph-B78fB-bz.js +1 -0
  63. package/src/assets/web-panel/assets/KnowledgeGraph-CztPDA96.css +1 -0
  64. package/src/assets/web-panel/assets/Logs-DJGcHYH_.js +2 -0
  65. package/src/assets/web-panel/assets/Logs-Gf_Mv9Nx.css +1 -0
  66. package/src/assets/web-panel/assets/MarkdownRenderer-BAxj61I3.css +1 -0
  67. package/src/assets/web-panel/assets/MarkdownRenderer-DkcG_MxW.js +1 -0
  68. package/src/assets/web-panel/assets/Marketplace-Djp5q9dS.css +1 -0
  69. package/src/assets/web-panel/assets/Marketplace-ucTbwByD.js +1 -0
  70. package/src/assets/web-panel/assets/McpTools-Cu1xZYYk.js +2 -0
  71. package/src/assets/web-panel/assets/McpTools-DSGHWYS_.css +1 -0
  72. package/src/assets/web-panel/assets/Memory-Bcc2hxOA.css +1 -0
  73. package/src/assets/web-panel/assets/Memory-DCGpXmi-.js +2 -0
  74. package/src/assets/web-panel/assets/MobileBridge-BQ-Uwwg7.css +1 -0
  75. package/src/assets/web-panel/assets/MobileBridge-BnKr0aAS.js +1 -0
  76. package/src/assets/web-panel/assets/MobileProjects-C5UvYJTP.js +1 -0
  77. package/src/assets/web-panel/assets/MobileProjects-Ceaxrqzc.css +1 -0
  78. package/src/assets/web-panel/assets/Mtc-D1UUl4WH.js +6 -0
  79. package/src/assets/web-panel/assets/Mtc-DHwbdUqA.css +1 -0
  80. package/src/assets/web-panel/assets/MtcAudit-B0x8gahq.css +1 -0
  81. package/src/assets/web-panel/assets/MtcAudit-D3aa8XP4.js +19 -0
  82. package/src/assets/web-panel/assets/Multisig-DiXdfJjO.js +7 -0
  83. package/src/assets/web-panel/assets/Multisig-kwPDnXnl.css +1 -0
  84. package/src/assets/web-panel/assets/NLProgramming-CLOvy-35.css +1 -0
  85. package/src/assets/web-panel/assets/NLProgramming-DbWABgSE.js +1 -0
  86. package/src/assets/web-panel/assets/Notes-BP1DPl-R.js +7 -0
  87. package/src/assets/web-panel/assets/Notes-COE2q2gD.css +1 -0
  88. package/src/assets/web-panel/assets/NotificationSettings-Co0e0uEO.css +1 -0
  89. package/src/assets/web-panel/assets/NotificationSettings-xaB6ONe7.js +1 -0
  90. package/src/assets/web-panel/assets/OrderTableRenderer-BnOISpKI.css +1 -0
  91. package/src/assets/web-panel/assets/OrderTableRenderer-D1uNcz3b.js +1 -0
  92. package/src/assets/web-panel/assets/Organization-BM3Lh8Q8.css +1 -0
  93. package/src/assets/web-panel/assets/Organization-DMLDGaf1.js +4 -0
  94. package/src/assets/web-panel/assets/{Overflow-ky9UfGv4.js → Overflow-DH4QPEoI.js} +1 -1
  95. package/src/assets/web-panel/assets/{OverrideContext-C0w0P4A3.js → OverrideContext-DLR1AtLy.js} +1 -1
  96. package/src/assets/web-panel/assets/P2P-Bl4OS10o.js +2 -0
  97. package/src/assets/web-panel/assets/P2P-Cx88UaiD.css +1 -0
  98. package/src/assets/web-panel/assets/PdhVaultBrowser-B9ZGFpn4.css +1 -0
  99. package/src/assets/web-panel/assets/PdhVaultBrowser-D9XSE2YI.js +7 -0
  100. package/src/assets/web-panel/assets/Permissions-CUaPlr6d.js +4 -0
  101. package/src/assets/web-panel/assets/Permissions-Diejgkbs.css +1 -0
  102. package/src/assets/web-panel/assets/PersonalDataHub-Ba92dZk-.js +3 -0
  103. package/src/assets/web-panel/assets/PersonalDataHub-C_xhspRy.css +1 -0
  104. package/src/assets/web-panel/assets/Pipeline-Bh2okm-8.js +1 -0
  105. package/src/assets/web-panel/assets/Pipeline-DxkXqrH2.css +1 -0
  106. package/src/assets/web-panel/assets/Privacy-Bmq3p4gC.js +1 -0
  107. package/src/assets/web-panel/assets/Privacy-CrsfSFKd.css +1 -0
  108. package/src/assets/web-panel/assets/ProjectInit-BPu2fdKR.js +2 -0
  109. package/src/assets/web-panel/assets/ProjectInit-CteEo-wF.css +1 -0
  110. package/src/assets/web-panel/assets/ProjectSettings-D6ABLpmt.js +2 -0
  111. package/src/assets/web-panel/assets/ProjectSettings-pLSae-wy.css +1 -0
  112. package/src/assets/web-panel/assets/Projects-BX-SG9R4.css +1 -0
  113. package/src/assets/web-panel/assets/Projects-qWHEve0z.js +1 -0
  114. package/src/assets/web-panel/assets/Providers-CpAXh_6c.css +1 -0
  115. package/src/assets/web-panel/assets/Providers-D9DI-2hc.js +1 -0
  116. package/src/assets/web-panel/assets/{QrScannerModal-er_HkLCI.js → QrScannerModal-CxifoeD5.js} +1 -1
  117. package/src/assets/web-panel/assets/QrScannerModal-DFrn7rxS.css +1 -0
  118. package/src/assets/web-panel/assets/QuickAsk-DC1BvwR7.js +1 -0
  119. package/src/assets/web-panel/assets/Recommend-CH6wKzGo.css +1 -0
  120. package/src/assets/web-panel/assets/Recommend-CKqbMB5o.js +1 -0
  121. package/src/assets/web-panel/assets/RemoteSession-BGGzPdS5.js +5 -0
  122. package/src/assets/web-panel/assets/Reputation-D6VPNEd0.css +1 -0
  123. package/src/assets/web-panel/assets/Reputation-DH90O9-5.js +1 -0
  124. package/src/assets/web-panel/assets/Row-h7ovueJc.js +1 -0
  125. package/src/assets/web-panel/assets/RssFeed-Cze7YLaG.css +1 -0
  126. package/src/assets/web-panel/assets/RssFeed-DaHxXTZg.js +3 -0
  127. package/src/assets/web-panel/assets/Search-B6RalzTB.css +1 -0
  128. package/src/assets/web-panel/assets/Search-Bn6Nqpn4.js +1 -0
  129. package/src/assets/web-panel/assets/Security-13K57V_v.css +1 -0
  130. package/src/assets/web-panel/assets/Security-ClbBmPJi.js +4 -0
  131. package/src/assets/web-panel/assets/Services-C8Qs6KXv.css +1 -0
  132. package/src/assets/web-panel/assets/Services-ChHLQwRn.js +2 -0
  133. package/src/assets/web-panel/assets/{Skeleton-CrFs6rUL.js → Skeleton-DfN6BFzt.js} +1 -1
  134. package/src/assets/web-panel/assets/Skills-BdjRyorN.css +1 -0
  135. package/src/assets/web-panel/assets/Skills-C926wDev.js +1 -0
  136. package/src/assets/web-panel/assets/Sla-DJzi1l1M.js +1 -0
  137. package/src/assets/web-panel/assets/Sla-K19oOyQc.css +1 -0
  138. package/src/assets/web-panel/assets/SpeechSettings-DYPJTDKz.css +1 -0
  139. package/src/assets/web-panel/assets/SpeechSettings-_GSyVjm_.js +1 -0
  140. package/src/assets/web-panel/assets/SyncSettings-B67xnERe.js +1 -0
  141. package/src/assets/web-panel/assets/SyncSettings-C6cDrwDR.css +1 -0
  142. package/src/assets/web-panel/assets/Tasks-BJjN_YEm.css +1 -0
  143. package/src/assets/web-panel/assets/Tasks-BaYZadcG.js +1 -0
  144. package/src/assets/web-panel/assets/Templates-BsMmCdZI.css +1 -0
  145. package/src/assets/web-panel/assets/Templates-Bu8kN1Xt.js +1 -0
  146. package/src/assets/web-panel/assets/Tenant-BM9qufw1.js +1 -0
  147. package/src/assets/web-panel/assets/Tenant-D3zkSAV0.css +1 -0
  148. package/src/assets/web-panel/assets/Terminal-MEdd5DjB.js +3 -0
  149. package/src/assets/web-panel/assets/Terminal-qPp9MaPu.css +1 -0
  150. package/src/assets/web-panel/assets/TimelineRenderer-C27kL2oU.js +1 -0
  151. package/src/assets/web-panel/assets/TimelineRenderer-DmztdsbF.css +1 -0
  152. package/src/assets/web-panel/assets/Tokens-BBOdNRHQ.css +1 -0
  153. package/src/assets/web-panel/assets/Tokens-Cvjd98VC.js +1 -0
  154. package/src/assets/web-panel/assets/{Trigger-CXrW4Nry.js → Trigger-CLym84HI.js} +1 -1
  155. package/src/assets/web-panel/assets/Trust-Bv2JTaNN.js +1 -0
  156. package/src/assets/web-panel/assets/Trust-DeOo0xAh.css +1 -0
  157. package/src/assets/web-panel/assets/UkeySign-CSCkNbtm.js +1 -0
  158. package/src/assets/web-panel/assets/VideoEditing-BFDXB4xh.js +1 -0
  159. package/src/assets/web-panel/assets/VideoEditing-DksiizfS.css +1 -0
  160. package/src/assets/web-panel/assets/Wallet-CMEFrG_b.js +4 -0
  161. package/src/assets/web-panel/assets/Wallet-Dw8uV4Ug.css +1 -0
  162. package/src/assets/web-panel/assets/WebAuthn-DKx6xPPl.css +1 -0
  163. package/src/assets/web-panel/assets/WebAuthn-x4eO_Q4y.js +5 -0
  164. package/src/assets/web-panel/assets/WorkflowEditor-ClWEPgV1.js +1 -0
  165. package/src/assets/web-panel/assets/WorkflowEditor-IiwsD8Kh.css +1 -0
  166. package/src/assets/web-panel/assets/{_getTag-DnrRH4E6.js → _getTag-BVc6NQ_K.js} +1 -1
  167. package/src/assets/web-panel/assets/{chat-BpJsXlTK.js → chat-BdYOI4gM.js} +1 -1
  168. package/src/assets/web-panel/assets/{collapseMotion-CqM1QOwM.js → collapseMotion-B4IZiILV.js} +1 -1
  169. package/src/assets/web-panel/assets/{colors-CUNg0-fh.js → colors-DcTBrGvS.js} +1 -1
  170. package/src/assets/web-panel/assets/{compact-item-C3tFHnhu.js → compact-item-Dn2ktVuj.js} +1 -1
  171. package/src/assets/web-panel/assets/createContext-XTreuyqp.js +1 -0
  172. package/src/assets/web-panel/assets/{debounce-CFGTTtN3.js → debounce-D9xTw4Sx.js} +1 -1
  173. package/src/assets/web-panel/assets/devWarning-CNIS3FrJ.js +1 -0
  174. package/src/assets/web-panel/assets/echarts-CDp6K7pj.js +19 -0
  175. package/src/assets/web-panel/assets/{hasIn-CU6RIciB.js → hasIn-CFRNsYQd.js} +1 -1
  176. package/src/assets/web-panel/assets/{icons-DG5UD-6K.js → icons-DlxlFL4g.js} +4 -4
  177. package/src/assets/web-panel/assets/index-3RqDry-K.js +71 -0
  178. package/src/assets/web-panel/assets/{index-BPWJw4Ji.js → index-8METW_Wr.js} +1 -1
  179. package/src/assets/web-panel/assets/index-BBd64wj8.js +31 -0
  180. package/src/assets/web-panel/assets/index-BEyVNbNE.js +3 -0
  181. package/src/assets/web-panel/assets/index-BMLpP8QQ.js +1 -0
  182. package/src/assets/web-panel/assets/{index-BzhobTgZ.js → index-BSqydcDa.js} +1 -1
  183. package/src/assets/web-panel/assets/index-BV6LojRv.js +21 -0
  184. package/src/assets/web-panel/assets/index-BbMWvjLZ.js +1 -0
  185. package/src/assets/web-panel/assets/{index-KgR1f2Gq.js → index-Brc0BF-k.js} +2 -2
  186. package/src/assets/web-panel/assets/{index-D4njcYFw.js → index-CG9YLDmI.js} +1 -1
  187. package/src/assets/web-panel/assets/{index-6EwPIfXu.js → index-CNHWMMDX.js} +1 -1
  188. package/src/assets/web-panel/assets/{index-CEIoRm_c.js → index-COuEJdmr.js} +3 -3
  189. package/src/assets/web-panel/assets/{index-BG4zuFf0.js → index-CRW3AWdS.js} +1 -1
  190. package/src/assets/web-panel/assets/{index-BOlAutGy.js → index-CUT4h5JB.js} +2 -2
  191. package/src/assets/web-panel/assets/index-CXMa7Z-S.js +1 -0
  192. package/src/assets/web-panel/assets/index-CbaPXyNc.js +19 -0
  193. package/src/assets/web-panel/assets/{index-Cq93VfoF.css → index-CfX1DEtk.css} +1 -1
  194. package/src/assets/web-panel/assets/{index-X6e0cGRU.js → index-CjHA_Q7s.js} +1 -1
  195. package/src/assets/web-panel/assets/index-CsnYp4qF.js +1 -0
  196. package/src/assets/web-panel/assets/index-D45vulkq.js +12 -0
  197. package/src/assets/web-panel/assets/index-D9kPBEqD.js +55 -0
  198. package/src/assets/web-panel/assets/index-DDTSgpXz.js +1 -0
  199. package/src/assets/web-panel/assets/index-DFl_a0n5.js +1 -0
  200. package/src/assets/web-panel/assets/index-DNdiAymC.js +1 -0
  201. package/src/assets/web-panel/assets/{index-BJjEAoDb.js → index-DQEu7uW0.js} +1 -1
  202. package/src/assets/web-panel/assets/index-DW9XncMy.js +21 -0
  203. package/src/assets/web-panel/assets/index-Daa1yCt_.js +1 -0
  204. package/src/assets/web-panel/assets/index-DdVpoNEQ.js +12 -0
  205. package/src/assets/web-panel/assets/index-Dhi4Oybt.js +1 -0
  206. package/src/assets/web-panel/assets/index-DoVoNjtJ.js +1 -0
  207. package/src/assets/web-panel/assets/{index-111hR8WZ.js → index-Vo7A4aiN.js} +4 -4
  208. package/src/assets/web-panel/assets/{index-lo9rgpyj.js → index-XdlYkgCa.js} +1 -1
  209. package/src/assets/web-panel/assets/{index-1L0tt7G2.js → index-ir2ZwWz5.js} +2 -2
  210. package/src/assets/web-panel/assets/index-kzyCd8a0.js +3 -0
  211. package/src/assets/web-panel/assets/{index-CyyhilXV.js → index-lnTt0Jps.js} +2 -2
  212. package/src/assets/web-panel/assets/{index-CLQjdKmE.js → index-ma-rJkfE.js} +1 -1
  213. package/src/assets/web-panel/assets/index-oE4jTpHK.js +13 -0
  214. package/src/assets/web-panel/assets/{index-K2Uqqkr1.js → index-r5sNECM5.js} +1 -1
  215. package/src/assets/web-panel/assets/index-uT4fRDzU.js +1 -0
  216. package/src/assets/web-panel/assets/index-xlS8pDS2.js +1 -0
  217. package/src/assets/web-panel/assets/{initDefaultProps-FI8D7E2x.js → initDefaultProps-mdL0oeZa.js} +1 -1
  218. package/src/assets/web-panel/assets/{isPlainObject-BWRMT62c.js → isPlainObject-_gz-soRW.js} +1 -1
  219. package/src/assets/web-panel/assets/isSymbol-DAy2hlR5.js +1 -0
  220. package/src/assets/web-panel/assets/motion-ZgVCKcEX.js +11 -0
  221. package/src/assets/web-panel/assets/{move-Vl1vUReW.js → move-A_28O5T2.js} +1 -1
  222. package/src/assets/web-panel/assets/{mtc-parser-6Cu2aFME.js → mtc-parser-0zlMjabo.js} +1 -1
  223. package/src/assets/web-panel/assets/{omit-VRKL8iSO.js → omit-DF7mU3yG.js} +1 -1
  224. package/src/assets/web-panel/assets/{pickAttrs-DZfWsOe0.js → pickAttrs-Cmt8liJP.js} +1 -1
  225. package/src/assets/web-panel/assets/{placementArrow-qmcOUc4W.js → placementArrow-DaMDC57b.js} +1 -1
  226. package/src/assets/web-panel/assets/{responsiveObserve-BLB6SsSw.js → responsiveObserve-CHw_f2d3.js} +1 -1
  227. package/src/assets/web-panel/assets/{slide-41jdYeSH.js → slide-DJS9fFQq.js} +1 -1
  228. package/src/assets/web-panel/assets/{statusUtils-Yn8OQ5ey.js → statusUtils-Bk3XdZwh.js} +1 -1
  229. package/src/assets/web-panel/assets/{styleChecker-4CEwz9Zd.js → styleChecker-DMybAFsA.js} +1 -1
  230. package/src/assets/web-panel/assets/useFlexGapSupport-_tbIIFMu.js +1 -0
  231. package/src/assets/web-panel/assets/{useFs-Bugo8HuF.js → useFs-KPklVptS.js} +1 -1
  232. package/src/assets/web-panel/assets/{useMergedState-DXbJa_zE.js → useMergedState-d-EXs3xd.js} +1 -1
  233. package/src/assets/web-panel/assets/{usePersonalDataHub-B-q2ElB0.js → usePersonalDataHub-C7FrKDhD.js} +1 -1
  234. package/src/assets/web-panel/assets/{useRefs-BrCfMLMc.js → useRefs-DHeCQehi.js} +1 -1
  235. package/src/assets/web-panel/assets/{useState-CnxtbLoC.js → useState-Dlgl7fUg.js} +1 -1
  236. package/src/assets/web-panel/assets/vendor-BXcBOG8b.js +1 -0
  237. package/src/assets/web-panel/assets/vnode-DB3JBusp.js +1 -0
  238. package/src/assets/web-panel/assets/warning-Pq00owYb.js +1 -0
  239. package/src/assets/web-panel/assets/{zoom-DM1y_KKP.js → zoom-C8rAdf81.js} +1 -1
  240. package/src/assets/web-panel/index.html +4 -4
  241. package/src/command-help-index.json +1 -1
  242. package/src/commands/agent.js +1 -1
  243. package/src/commands/governed-skill-marketplace.js +24 -10
  244. package/src/commands/llm.js +4 -3
  245. package/src/data/changelog.json +14 -1
  246. package/src/harness/worktree-isolator.js +4 -1
  247. package/src/lib/compaction-host-provenance.js +24 -0
  248. package/src/lib/context-memory-kernel/durable-memory-port.js +46 -34
  249. package/src/lib/context-memory-kernel/live-compaction.js +12 -3
  250. package/src/lib/context-memory-kernel/memory-query-bundle.js +375 -0
  251. package/src/lib/context-memory-kernel/memory-query-control.js +28 -0
  252. package/src/lib/context-memory-kernel/memory-service.js +30 -16
  253. package/src/lib/context-memory-kernel/memory-shard-snapshots.js +63 -0
  254. package/src/lib/context-memory-kernel/provider-context.js +55 -24
  255. package/src/lib/context-memory-kernel/segmented-memory-port.js +347 -138
  256. package/src/lib/cost-budget.js +2 -0
  257. package/src/lib/ephemeral-worktree-scope.js +24 -0
  258. package/src/lib/evolution/evolution-deployment-loader.js +6 -4
  259. package/src/lib/evolution/governed-skill-marketplace-abort.js +14 -0
  260. package/src/lib/evolution/governed-skill-marketplace-candidate.js +10 -2
  261. package/src/lib/evolution/governed-skill-marketplace-cli-host.js +47 -20
  262. package/src/lib/evolution/governed-skill-marketplace.js +47 -24
  263. package/src/lib/goal-condition-engine.js +20 -3
  264. package/src/lib/goal-verification-command.js +221 -0
  265. package/src/lib/goal-verification-plan.js +372 -0
  266. package/src/lib/llm-connection-probe.js +12 -5
  267. package/src/lib/llm-onboarding-catalog.json +1 -1
  268. package/src/lib/llm-pricing.js +34 -8
  269. package/src/lib/mcp-tool-catalog-authority.js +244 -0
  270. package/src/lib/model-capabilities.js +6 -0
  271. package/src/lib/model-catalog-review.js +3 -0
  272. package/src/lib/model-context-catalog.js +44 -2
  273. package/src/lib/openai-responses.js +35 -6
  274. package/src/lib/sub-agent-context.js +12 -4
  275. package/src/lib/subagent-inheritance.js +162 -2
  276. package/src/lib/usage-pricing-context.js +34 -17
  277. package/src/repl/agent-repl.js +34 -2
  278. package/src/runtime/agent-core.js +199 -9
  279. package/src/runtime/compaction-host-context.js +72 -0
  280. package/src/runtime/headless-runner.js +133 -37
  281. package/src/runtime/headless-stream.js +38 -21
  282. package/src/runtime/mcp-agent-catalog.js +257 -0
  283. package/src/runtime/mcp-config.js +18 -69
  284. package/src/runtime/mcp-tool-search.js +16 -1
  285. package/src/runtime/system-prompt.js +9 -0
  286. package/src/assets/web-panel/assets/AIOps-CSpp7iGY.css +0 -1
  287. package/src/assets/web-panel/assets/AIOps-o-rFKEYL.js +0 -1
  288. package/src/assets/web-panel/assets/Analytics-Bt7H_jrh.js +0 -3
  289. package/src/assets/web-panel/assets/Analytics-DJcHjy5J.css +0 -1
  290. package/src/assets/web-panel/assets/AppLayout-CgynsRFP.js +0 -9
  291. package/src/assets/web-panel/assets/AppLayout-VlanTjPw.css +0 -1
  292. package/src/assets/web-panel/assets/Artifacts-CTVt96zW.css +0 -1
  293. package/src/assets/web-panel/assets/Artifacts-gghOGDyE.js +0 -1
  294. package/src/assets/web-panel/assets/Audit-D8oxP0wr.css +0 -1
  295. package/src/assets/web-panel/assets/Audit-DBXn-AZ6.js +0 -1
  296. package/src/assets/web-panel/assets/BackgroundAgents--dxPftKa.js +0 -1
  297. package/src/assets/web-panel/assets/BackgroundAgents-Dq2340Kl.css +0 -1
  298. package/src/assets/web-panel/assets/Backup-D9Zf_2tH.js +0 -1
  299. package/src/assets/web-panel/assets/Backup-Wi9CaP3d.css +0 -1
  300. package/src/assets/web-panel/assets/BaseInput-DDTOjovq.js +0 -1
  301. package/src/assets/web-panel/assets/Chat-2ETqdBLn.js +0 -8
  302. package/src/assets/web-panel/assets/Chat-KSGPtU0L.css +0 -1
  303. package/src/assets/web-panel/assets/ChatBubbleRenderer-DSg2Xs8G.js +0 -1
  304. package/src/assets/web-panel/assets/ChatBubbleRenderer-gy5SDGw2.css +0 -1
  305. package/src/assets/web-panel/assets/Codegen-4ieEEIwt.js +0 -1
  306. package/src/assets/web-panel/assets/Codegen-BB08p1fn.css +0 -1
  307. package/src/assets/web-panel/assets/Community-Cbq1nrpo.css +0 -1
  308. package/src/assets/web-panel/assets/Community-DeYxFMJb.js +0 -1
  309. package/src/assets/web-panel/assets/Compliance-DLVjbVUh.js +0 -1
  310. package/src/assets/web-panel/assets/Compliance-NoXr2Vof.css +0 -1
  311. package/src/assets/web-panel/assets/Cowork-BlXJRu6L.css +0 -1
  312. package/src/assets/web-panel/assets/Cowork-DfUKa0T5.js +0 -6
  313. package/src/assets/web-panel/assets/Cron-_RpktpO5.js +0 -2
  314. package/src/assets/web-panel/assets/Crosschain-7x6xdbwH.js +0 -1
  315. package/src/assets/web-panel/assets/Crosschain-CgRAecoR.css +0 -1
  316. package/src/assets/web-panel/assets/DID-DVsYcgvs.css +0 -1
  317. package/src/assets/web-panel/assets/DID-ccVhToC1.js +0 -2
  318. package/src/assets/web-panel/assets/Dashboard-CAPSdFR4.css +0 -1
  319. package/src/assets/web-panel/assets/Dashboard-DhygcaoK.js +0 -3
  320. package/src/assets/web-panel/assets/Dropdown-DFplwXK7.js +0 -1
  321. package/src/assets/web-panel/assets/EmailListRenderer-Bm01soCN.js +0 -1
  322. package/src/assets/web-panel/assets/EmailListRenderer-DTPZPx_S.css +0 -1
  323. package/src/assets/web-panel/assets/EvolutionSettings-Bdw8ApoT.css +0 -1
  324. package/src/assets/web-panel/assets/EvolutionSettings-C4v--DkD.js +0 -1
  325. package/src/assets/web-panel/assets/FamilyGuardDashboard-ChQXDBA3.js +0 -1
  326. package/src/assets/web-panel/assets/FamilyGuardDashboard-nd3idUVb.css +0 -1
  327. package/src/assets/web-panel/assets/Federation-C0yomE-M.js +0 -1
  328. package/src/assets/web-panel/assets/Federation-fGN6iMX_.css +0 -1
  329. package/src/assets/web-panel/assets/FormItemContext-DtT3ZEZK.js +0 -2
  330. package/src/assets/web-panel/assets/GenericCardRenderer-DgITtFRv.js +0 -1
  331. package/src/assets/web-panel/assets/GenericCardRenderer-o85VDYQS.css +0 -1
  332. package/src/assets/web-panel/assets/Git-CCY42R8S.js +0 -2
  333. package/src/assets/web-panel/assets/Governance-DtCS4NDm.css +0 -1
  334. package/src/assets/web-panel/assets/Governance-N66Bwvqg.js +0 -1
  335. package/src/assets/web-panel/assets/Inference-BkbPuR_2.js +0 -1
  336. package/src/assets/web-panel/assets/Inference-t-w0NgIS.css +0 -1
  337. package/src/assets/web-panel/assets/KnowledgeGraph-4NU1S2Xm.css +0 -1
  338. package/src/assets/web-panel/assets/KnowledgeGraph-B3PibXdA.js +0 -1
  339. package/src/assets/web-panel/assets/Logs-CUtNB_N6.js +0 -2
  340. package/src/assets/web-panel/assets/Logs-DQbCaYhL.css +0 -1
  341. package/src/assets/web-panel/assets/MarkdownRenderer-D-V4dOe3.js +0 -1
  342. package/src/assets/web-panel/assets/MarkdownRenderer-DbzhFwvz.css +0 -1
  343. package/src/assets/web-panel/assets/Marketplace-Bvo5cuGa.css +0 -1
  344. package/src/assets/web-panel/assets/Marketplace-DLNJb6Nr.js +0 -1
  345. package/src/assets/web-panel/assets/McpTools-2zGjJb5K.js +0 -4
  346. package/src/assets/web-panel/assets/McpTools-534Q95Mx.css +0 -1
  347. package/src/assets/web-panel/assets/Memory-9rNZ1EvR.js +0 -2
  348. package/src/assets/web-panel/assets/Memory-CleW_R6V.css +0 -1
  349. package/src/assets/web-panel/assets/MobileBridge-Cw7sAAgn.js +0 -1
  350. package/src/assets/web-panel/assets/MobileBridge-D3Arxfeg.css +0 -1
  351. package/src/assets/web-panel/assets/MobileProjects-8XACrqqy.js +0 -1
  352. package/src/assets/web-panel/assets/MobileProjects-BD4alw6-.css +0 -1
  353. package/src/assets/web-panel/assets/Mtc-CXZGO9Sh.css +0 -1
  354. package/src/assets/web-panel/assets/Mtc-mg02JNy-.js +0 -6
  355. package/src/assets/web-panel/assets/MtcAudit-B1Vkhj2l.js +0 -19
  356. package/src/assets/web-panel/assets/MtcAudit-C1JM8esp.css +0 -1
  357. package/src/assets/web-panel/assets/Multisig-BQEeA7GG.js +0 -13
  358. package/src/assets/web-panel/assets/Multisig-BryR2Jpr.css +0 -1
  359. package/src/assets/web-panel/assets/NLProgramming-BIbkjZV3.js +0 -1
  360. package/src/assets/web-panel/assets/NLProgramming-DGDHq6Z9.css +0 -1
  361. package/src/assets/web-panel/assets/Notes-BKKmMtqV.css +0 -1
  362. package/src/assets/web-panel/assets/Notes-DIwhkZNY.js +0 -7
  363. package/src/assets/web-panel/assets/NotificationSettings-CG3Kfuef.css +0 -1
  364. package/src/assets/web-panel/assets/NotificationSettings-Cj9175ce.js +0 -1
  365. package/src/assets/web-panel/assets/OrderTableRenderer-CfrDjSHT.css +0 -1
  366. package/src/assets/web-panel/assets/OrderTableRenderer-IfNpXT2R.js +0 -1
  367. package/src/assets/web-panel/assets/Organization-DPFp6G9o.js +0 -4
  368. package/src/assets/web-panel/assets/Organization-LVvqwG0D.css +0 -1
  369. package/src/assets/web-panel/assets/P2P-DcFvP7F-.css +0 -1
  370. package/src/assets/web-panel/assets/P2P-tXck8GLq.js +0 -2
  371. package/src/assets/web-panel/assets/PdhVaultBrowser-DSvpQl9k.js +0 -7
  372. package/src/assets/web-panel/assets/PdhVaultBrowser-DZZrUOr1.css +0 -1
  373. package/src/assets/web-panel/assets/Permissions-CKPkdLj-.js +0 -4
  374. package/src/assets/web-panel/assets/Permissions-DsPE_IQy.css +0 -1
  375. package/src/assets/web-panel/assets/PersonalDataHub-BhpRlh9D.css +0 -1
  376. package/src/assets/web-panel/assets/PersonalDataHub-DnqXc12l.js +0 -9
  377. package/src/assets/web-panel/assets/Pipeline-BItr5CyP.css +0 -1
  378. package/src/assets/web-panel/assets/Pipeline-BKjFU_kd.js +0 -1
  379. package/src/assets/web-panel/assets/Privacy-ChC-J5Tn.js +0 -1
  380. package/src/assets/web-panel/assets/Privacy-F_ENsxZk.css +0 -1
  381. package/src/assets/web-panel/assets/ProjectInit-B86LEzDL.css +0 -1
  382. package/src/assets/web-panel/assets/ProjectInit-ByFZG9sY.js +0 -2
  383. package/src/assets/web-panel/assets/ProjectSettings-Bbv1Kiw-.js +0 -2
  384. package/src/assets/web-panel/assets/ProjectSettings-DK7KA_iX.css +0 -1
  385. package/src/assets/web-panel/assets/Projects-CmJeUDBW.css +0 -1
  386. package/src/assets/web-panel/assets/Projects-QYyGW31-.js +0 -1
  387. package/src/assets/web-panel/assets/Providers-C6q_fvea.css +0 -1
  388. package/src/assets/web-panel/assets/Providers-CJLnWw0r.js +0 -1
  389. package/src/assets/web-panel/assets/QrScannerModal-NwAHNfiJ.css +0 -1
  390. package/src/assets/web-panel/assets/QuickAsk-DoXU0np9.js +0 -1
  391. package/src/assets/web-panel/assets/Recommend-DCo_vuaf.js +0 -1
  392. package/src/assets/web-panel/assets/Recommend-D_bf91K6.css +0 -1
  393. package/src/assets/web-panel/assets/RemoteSession-CLuL925Z.js +0 -5
  394. package/src/assets/web-panel/assets/Reputation-CNNCA_-M.js +0 -1
  395. package/src/assets/web-panel/assets/Reputation-DiOsOleI.css +0 -1
  396. package/src/assets/web-panel/assets/Row-Vu4j631i.js +0 -1
  397. package/src/assets/web-panel/assets/RssFeed-C18B4xiy.js +0 -3
  398. package/src/assets/web-panel/assets/RssFeed-CjcbkyUb.css +0 -1
  399. package/src/assets/web-panel/assets/Search-DxiqccE2.js +0 -1
  400. package/src/assets/web-panel/assets/Search-Klk29S7C.css +0 -1
  401. package/src/assets/web-panel/assets/Security-BmrukMHn.css +0 -1
  402. package/src/assets/web-panel/assets/Security-Droe_hHI.js +0 -4
  403. package/src/assets/web-panel/assets/Services-CwmmyXzq.js +0 -2
  404. package/src/assets/web-panel/assets/Services-DAnVNhUG.css +0 -1
  405. package/src/assets/web-panel/assets/Skills-BUu9owbR.css +0 -1
  406. package/src/assets/web-panel/assets/Skills-Dp-d2miK.js +0 -1
  407. package/src/assets/web-panel/assets/Sla-2DFXVbK4.js +0 -1
  408. package/src/assets/web-panel/assets/Sla-sodqCU4a.css +0 -1
  409. package/src/assets/web-panel/assets/SpeechSettings-Cdd9lCoy.js +0 -1
  410. package/src/assets/web-panel/assets/SpeechSettings-CgB9nFyq.css +0 -1
  411. package/src/assets/web-panel/assets/SyncSettings-B3hJqmBP.css +0 -1
  412. package/src/assets/web-panel/assets/SyncSettings-CxQhcYSk.js +0 -2
  413. package/src/assets/web-panel/assets/Tasks-BHWVRfXx.js +0 -1
  414. package/src/assets/web-panel/assets/Tasks-nbTUVXvt.css +0 -1
  415. package/src/assets/web-panel/assets/Templates-CpFsKk_l.css +0 -1
  416. package/src/assets/web-panel/assets/Templates-DNFk3a5_.js +0 -1
  417. package/src/assets/web-panel/assets/Tenant-B6X6dPo8.js +0 -1
  418. package/src/assets/web-panel/assets/Tenant-MuPJnOjk.css +0 -1
  419. package/src/assets/web-panel/assets/Terminal-BuUNoLGM.js +0 -3
  420. package/src/assets/web-panel/assets/Terminal-DHoveJwj.css +0 -1
  421. package/src/assets/web-panel/assets/TimelineRenderer-BlTAtkOc.css +0 -1
  422. package/src/assets/web-panel/assets/TimelineRenderer-DThrBYj8.js +0 -1
  423. package/src/assets/web-panel/assets/Tokens-CA_u4Blu.js +0 -1
  424. package/src/assets/web-panel/assets/Tokens-CynVae-o.css +0 -1
  425. package/src/assets/web-panel/assets/Trust-C-WrW0Fj.css +0 -1
  426. package/src/assets/web-panel/assets/Trust-DHcLpNy3.js +0 -1
  427. package/src/assets/web-panel/assets/UkeySign-B_fni4C2.js +0 -1
  428. package/src/assets/web-panel/assets/VideoEditing-BDFghpzP.css +0 -1
  429. package/src/assets/web-panel/assets/VideoEditing-g9nf2EhS.js +0 -1
  430. package/src/assets/web-panel/assets/Wallet-C8pOjIve.js +0 -4
  431. package/src/assets/web-panel/assets/Wallet-DUbpTRcg.css +0 -1
  432. package/src/assets/web-panel/assets/WebAuthn-BaKNjxZt.js +0 -5
  433. package/src/assets/web-panel/assets/WebAuthn-CVAFRfCQ.css +0 -1
  434. package/src/assets/web-panel/assets/WorkflowEditor-429lPWYk.css +0 -1
  435. package/src/assets/web-panel/assets/WorkflowEditor-CX030Wb1.js +0 -1
  436. package/src/assets/web-panel/assets/createContext-B8rTvO61.js +0 -1
  437. package/src/assets/web-panel/assets/devWarning-B4_IVU_n.js +0 -1
  438. package/src/assets/web-panel/assets/echarts-C61Vn3mP.js +0 -25
  439. package/src/assets/web-panel/assets/index--6BUI55w.js +0 -1
  440. package/src/assets/web-panel/assets/index-5Q1bepcM.js +0 -1
  441. package/src/assets/web-panel/assets/index-B10Ia2KL.js +0 -21
  442. package/src/assets/web-panel/assets/index-B1SLBLli.js +0 -3
  443. package/src/assets/web-panel/assets/index-B8_VQAav.js +0 -1
  444. package/src/assets/web-panel/assets/index-BMuPJra-.js +0 -1
  445. package/src/assets/web-panel/assets/index-BOCjph-k.js +0 -12
  446. package/src/assets/web-panel/assets/index-BpBaOWmV.js +0 -1
  447. package/src/assets/web-panel/assets/index-CDlHvQtw.js +0 -1
  448. package/src/assets/web-panel/assets/index-CPF7Vqri.js +0 -55
  449. package/src/assets/web-panel/assets/index-CPmgKQcl.js +0 -1
  450. package/src/assets/web-panel/assets/index-CcpMHPWd.js +0 -21
  451. package/src/assets/web-panel/assets/index-Cyksnofp.js +0 -1
  452. package/src/assets/web-panel/assets/index-Dc9pcin6.js +0 -1
  453. package/src/assets/web-panel/assets/index-DfAC55QA.js +0 -19
  454. package/src/assets/web-panel/assets/index-DgNCfwvg.js +0 -1
  455. package/src/assets/web-panel/assets/index-DvfhIBNZ.js +0 -1
  456. package/src/assets/web-panel/assets/index-Hbzd9WeI.js +0 -1
  457. package/src/assets/web-panel/assets/index-IiS7WoUl.js +0 -13
  458. package/src/assets/web-panel/assets/index-Xa6TlaD7.js +0 -31
  459. package/src/assets/web-panel/assets/index-YczWc2_0.js +0 -12
  460. package/src/assets/web-panel/assets/index-h_ANnbR8.js +0 -3
  461. package/src/assets/web-panel/assets/index-k7QsBwyo.js +0 -75
  462. package/src/assets/web-panel/assets/isSymbol-S5WZT7lS.js +0 -1
  463. package/src/assets/web-panel/assets/motion-B1hpJYSD.js +0 -11
  464. package/src/assets/web-panel/assets/useFlexGapSupport-BClv53kR.js +0 -1
  465. package/src/assets/web-panel/assets/vendor-Bn1JzzAn.js +0 -42
  466. package/src/assets/web-panel/assets/vnode-ejVeFJ0x.js +0 -1
@@ -75,6 +75,8 @@ export class CostBudget {
75
75
  cacheCreationTokens,
76
76
  cacheCreation5mTokens: pricingContext.cacheCreation5mTokens,
77
77
  cacheCreation1hTokens: pricingContext.cacheCreation1hTokens,
78
+ cacheCreation30mTokens: pricingContext.cacheCreation30mTokens,
79
+ cacheCreation12hTokens: pricingContext.cacheCreation12hTokens,
78
80
  cacheCreationInvalid: pricingContext.cacheCreationInvalid,
79
81
  pricingContextInvalid:
80
82
  pricingContext.pricingContextInvalid === true ||
@@ -0,0 +1,24 @@
1
+ import { AsyncLocalStorage } from "node:async_hooks";
2
+
3
+ const scopes = new AsyncLocalStorage();
4
+
5
+ /**
6
+ * An ephemeral checkout belongs to its awaited callback. This host scope is a
7
+ * capability restriction, not a process lease: tools that return before their
8
+ * consumers settle must refuse dispatch until they can transfer that ownership.
9
+ * Async descendants retain the restriction even after the callback returns.
10
+ */
11
+ export function withEphemeralWorktreeScope(worktreePath, callback) {
12
+ return scopes.run(Object.freeze({ worktreePath }), callback);
13
+ }
14
+
15
+ export function ephemeralWorktreeConsumerRefusal(operation) {
16
+ const scope = scopes.getStore();
17
+ if (!scope) return null;
18
+ return {
19
+ error: `${operation} cannot outlive an ephemeral worktree. Run this work in the foreground, or launch it from a persistent checkout with its own lifecycle owner.`,
20
+ code: "CC_EPHEMERAL_WORKTREE_CONSUMER_UNOWNED",
21
+ worktreePath: scope.worktreePath,
22
+ policy: { decision: "deny", via: "ephemeral-worktree-lifetime" },
23
+ };
24
+ }
@@ -8,10 +8,6 @@ import {
8
8
  assertEvolutionDeploymentRevisionFloor,
9
9
  readEvolutionDeploymentProfile,
10
10
  } from "./evolution-deployment-profile.js";
11
- import {
12
- readEvolutionEnabled,
13
- resolveEvolutionEnabled,
14
- } from "./evolution-enabled.js";
15
11
 
16
12
  export const EVOLUTION_DEPLOYMENT_DESCRIPTOR_SCHEMA =
17
13
  "chainlesschain.evolution-deployment-descriptor/v1";
@@ -1038,6 +1034,12 @@ export async function loadEvolutionDeploymentCommandDependencies(
1038
1034
  } = {},
1039
1035
  ) {
1040
1036
  if (!SUPPORTED_COMMANDS.has(commandName)) return null;
1037
+ // Unsupported commands (including read-only session show) need no deployment
1038
+ // configuration. Loading it eagerly also loads secret-store and the full
1039
+ // process broker/platform sandbox graph before this early return.
1040
+ const { readEvolutionEnabled, resolveEvolutionEnabled } = await import(
1041
+ "./evolution-enabled.js"
1042
+ );
1041
1043
  const localModelDependencies = () =>
1042
1044
  dependencies(
1043
1045
  {
@@ -0,0 +1,14 @@
1
+ import { raceWithAbort, throwIfAborted } from "../abort-utils.js";
2
+
3
+ // Only race reads/preparation. Durable commits must retain their acknowledgement
4
+ // and recovery path even when the caller interrupts after the append starts.
5
+ export function awaitMarketplaceRead(operation, signal) {
6
+ throwIfAborted(signal);
7
+ return raceWithAbort(
8
+ Promise.resolve().then(() => {
9
+ throwIfAborted(signal);
10
+ return operation();
11
+ }),
12
+ signal,
13
+ );
14
+ }
@@ -1,6 +1,8 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import { isAbsolute } from "node:path";
3
3
  import { types as utilTypes } from "node:util";
4
+ import { throwIfAborted } from "../abort-utils.js";
5
+ import { awaitMarketplaceRead } from "./governed-skill-marketplace-abort.js";
4
6
  import {
5
7
  SkillCandidateRegistry,
6
8
  SKILL_CANDIDATE_MAX_ARTIFACT_BYTES,
@@ -250,7 +252,8 @@ export function createGovernedSkillMarketplaceCandidateInstaller({
250
252
  };
251
253
  const installer = Object.freeze({
252
254
  tenantId,
253
- async materialize(inspected) {
255
+ async materialize(inspected, { signal } = {}) {
256
+ throwIfAborted(signal);
254
257
  const { manifest, adapted, target } = inspected;
255
258
  if (manifest.tenantId !== tenantId)
256
259
  throw new Error("marketplace candidate tenant mismatch");
@@ -262,7 +265,11 @@ export function createGovernedSkillMarketplaceCandidateInstaller({
262
265
  adaptedOutputDigest: adapted.outputDigest,
263
266
  sbomDigest: manifest.sbomDigest,
264
267
  });
265
- const resolved = await Reflect.apply(resolve, artifacts, [request]);
268
+ const resolved = await awaitMarketplaceRead(
269
+ () => Reflect.apply(resolve, artifacts, [request, { signal }]),
270
+ signal,
271
+ );
272
+ throwIfAborted(signal);
266
273
  const sourceBytes = bytes(
267
274
  resolved?.packageBytes,
268
275
  request.packageDigest,
@@ -307,6 +314,7 @@ export function createGovernedSkillMarketplaceCandidateInstaller({
307
314
  ...core,
308
315
  bindingDigest: bindingDigest(core),
309
316
  });
317
+ throwIfAborted(signal);
310
318
  const result = create(candidateInput(candidate));
311
319
  if (result.candidate.candidateId !== candidate.candidateId)
312
320
  throw new Error(
@@ -1,4 +1,6 @@
1
1
  import { types as utilTypes } from "node:util";
2
+ import { throwIfAborted } from "../abort-utils.js";
3
+ import { awaitMarketplaceRead } from "./governed-skill-marketplace-abort.js";
2
4
  import { GovernedSkillMarketplace } from "./governed-skill-marketplace.js";
3
5
  import { isGovernedSkillMarketplaceLedgerAdapter } from "./governed-skill-marketplace-ledger-adapter.js";
4
6
  import { isGovernedSkillMarketplaceCandidateInstaller } from "./governed-skill-marketplace-candidate.js";
@@ -105,12 +107,16 @@ export function createGovernedSkillMarketplaceCliHost({
105
107
  candidateInstaller.verify(state);
106
108
  return state;
107
109
  };
108
- const resolveManifest = async (skillName, version) => {
110
+ const resolveManifest = async (skillName, version, { signal } = {}) => {
111
+ throwIfAborted(signal);
109
112
  id(skillName, "skillName");
110
113
  if (version !== null) id(version, "version");
111
- const manifest = await resolve(
112
- Object.freeze({ tenantId, skillName, version }),
114
+ const manifest = await awaitMarketplaceRead(
115
+ () =>
116
+ resolve(Object.freeze({ tenantId, skillName, version }), { signal }),
117
+ signal,
113
118
  );
119
+ throwIfAborted(signal);
114
120
  if (
115
121
  manifest?.tenantId !== tenantId ||
116
122
  manifest.skillName !== skillName ||
@@ -217,20 +223,30 @@ export function createGovernedSkillMarketplaceCliHost({
217
223
  });
218
224
  },
219
225
  state: ({ skillName } = {}) => stateFor(skillName),
220
- async install({
221
- skillName,
222
- version = null,
223
- manifestDigest,
224
- expectedStateDigest = null,
225
- } = {}) {
226
+ async install(
227
+ {
228
+ skillName,
229
+ version = null,
230
+ manifestDigest,
231
+ expectedStateDigest = null,
232
+ } = {},
233
+ { signal } = {},
234
+ ) {
235
+ throwIfAborted(signal);
226
236
  digest(manifestDigest, "manifestDigest");
227
237
  if (expectedStateDigest !== null)
228
238
  digest(expectedStateDigest, "expectedStateDigest");
229
- const manifest = await resolveManifest(skillName, version);
239
+ const manifest = await resolveManifest(skillName, version, { signal });
230
240
  if (manifest.manifestDigest !== manifestDigest)
231
241
  throw new Error("marketplace catalog manifest changed; inspect again");
232
- const inspected = await marketplace.inspect(manifest, target);
233
- if (await isManifestRevoked({ skillName, manifestDigest }))
242
+ const inspected = await marketplace.inspect(manifest, target, { signal });
243
+ throwIfAborted(signal);
244
+ if (
245
+ await awaitMarketplaceRead(
246
+ () => isManifestRevoked({ skillName, manifestDigest }),
247
+ signal,
248
+ )
249
+ )
234
250
  throw new Error(
235
251
  "marketplace manifest was revoked and cannot be staged again",
236
252
  );
@@ -251,7 +267,12 @@ export function createGovernedSkillMarketplaceCliHost({
251
267
  state,
252
268
  });
253
269
  };
254
- const current = await stateFor(skillName);
270
+ throwIfAborted(signal);
271
+ const current = await awaitMarketplaceRead(
272
+ () => stateFor(skillName),
273
+ signal,
274
+ );
275
+ throwIfAborted(signal);
255
276
  if (isReplay(current)) return result(current, true);
256
277
  if (
257
278
  current?.manifestDigest === manifestDigest &&
@@ -264,15 +285,21 @@ export function createGovernedSkillMarketplaceCliHost({
264
285
  );
265
286
  if ((current?.stateDigest ?? null) !== expectedStateDigest)
266
287
  throw new Error("marketplace install baseline changed");
267
- const candidateBinding = await candidateInstaller.materialize(inspected);
288
+ const candidateBinding = await candidateInstaller.materialize(inspected, {
289
+ signal,
290
+ });
291
+ throwIfAborted(signal);
268
292
  try {
269
293
  return result(
270
- await marketplace.stage({
271
- manifest,
272
- target,
273
- expectedStateDigest,
274
- candidateBinding,
275
- }),
294
+ await marketplace.stage(
295
+ {
296
+ manifest,
297
+ target,
298
+ expectedStateDigest,
299
+ candidateBinding,
300
+ },
301
+ { signal },
302
+ ),
276
303
  false,
277
304
  );
278
305
  } catch (error) {
@@ -1,5 +1,7 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import { types as utilTypes } from "node:util";
3
+ import { throwIfAborted } from "../abort-utils.js";
4
+ import { awaitMarketplaceRead } from "./governed-skill-marketplace-abort.js";
3
5
  import { verifyGovernedSkillMarketplaceCandidateBinding } from "./governed-skill-marketplace-candidate.js";
4
6
 
5
7
  import {
@@ -322,23 +324,33 @@ export class GovernedSkillMarketplace {
322
324
  this._verifyRevocation = capture(ports, "verifyRevocation");
323
325
  }
324
326
 
325
- async verifyListing(input, target) {
327
+ async verifyListing(input, target, { signal } = {}) {
328
+ throwIfAborted(signal);
326
329
  const manifest = normalizeManifest(input, this.tenantId);
327
- if ((await this._verifySignature({ manifest })) !== true)
330
+ if (
331
+ (await awaitMarketplaceRead(
332
+ () => this._verifySignature({ manifest }, { signal }),
333
+ signal,
334
+ )) !== true
335
+ )
328
336
  throw new Error("marketplace manifest signature is invalid");
337
+ throwIfAborted(signal);
329
338
  const cell = targetCell(manifest, target);
330
339
  if (cell.safetyPassed !== true)
331
340
  throw new Error("marketplace target safety gate failed");
332
341
  return freeze({ manifest, target: clone(target), cell });
333
342
  }
334
343
 
335
- async inspect(input, target) {
336
- const { manifest, cell } = await this.verifyListing(input, target);
337
- const adapted = await this._adapt({
338
- manifest,
339
- target: clone(target),
340
- cell,
344
+ async inspect(input, target, { signal } = {}) {
345
+ const { manifest, cell } = await this.verifyListing(input, target, {
346
+ signal,
341
347
  });
348
+ throwIfAborted(signal);
349
+ const adapted = await awaitMarketplaceRead(
350
+ () => this._adapt({ manifest, target: clone(target), cell }, { signal }),
351
+ signal,
352
+ );
353
+ throwIfAborted(signal);
342
354
  if (
343
355
  adapted?.authenticated !== true ||
344
356
  adapted.manifestDigest !== manifest.manifestDigest ||
@@ -357,16 +369,22 @@ export class GovernedSkillMarketplace {
357
369
  });
358
370
  }
359
371
 
360
- async stage({
361
- manifest: input,
362
- target,
363
- expectedStateDigest = null,
364
- candidateBinding = null,
365
- } = {}) {
366
- const inspected = await this.inspect(input, target);
367
- const current = await this._load({
368
- skillName: inspected.manifest.skillName,
369
- });
372
+ async stage(
373
+ {
374
+ manifest: input,
375
+ target,
376
+ expectedStateDigest = null,
377
+ candidateBinding = null,
378
+ } = {},
379
+ { signal } = {},
380
+ ) {
381
+ const inspected = await this.inspect(input, target, { signal });
382
+ throwIfAborted(signal);
383
+ const current = await awaitMarketplaceRead(
384
+ () => this._load({ skillName: inspected.manifest.skillName }),
385
+ signal,
386
+ );
387
+ throwIfAborted(signal);
370
388
  if ((current?.stateDigest || null) !== expectedStateDigest)
371
389
  throw new Error("marketplace install baseline changed");
372
390
  const state = {
@@ -400,6 +418,9 @@ export class GovernedSkillMarketplace {
400
418
  );
401
419
  state.candidateBinding = binding;
402
420
  }
421
+ // Once the durable append starts, await its acknowledgement/recovery. An
422
+ // abort cannot truthfully turn a committed state into a cancelled install.
423
+ throwIfAborted(signal);
403
424
  return this._persist(state, expectedStateDigest, "marketplace.staged");
404
425
  }
405
426
 
@@ -629,12 +650,14 @@ export class GovernedSkillMarketplace {
629
650
  }
630
651
  let current = await this._verifiedState(request.skillName);
631
652
  const expectedStateDigest = request.dependency.digest;
632
- if (!(
633
- current.revoked === true &&
634
- current.stage === "rolled-back" &&
635
- current.revocationBaselineStateDigest === expectedStateDigest &&
636
- current.revocationPropagationRequestDigest === request.requestDigest
637
- )) {
653
+ if (
654
+ !(
655
+ current.revoked === true &&
656
+ current.stage === "rolled-back" &&
657
+ current.revocationBaselineStateDigest === expectedStateDigest &&
658
+ current.revocationPropagationRequestDigest === request.requestDigest
659
+ )
660
+ ) {
638
661
  if (current.stateDigest !== expectedStateDigest) {
639
662
  throw new Error("marketplace revocation dependency baseline changed");
640
663
  }
@@ -81,6 +81,7 @@ export function normalizeGoalBudget(input = {}) {
81
81
  * file-exists:dist/app.js → met iff the path exists
82
82
  * contains:ALL GREEN → met iff the last output contains the text
83
83
  * regex:^BUILD OK$ → met iff the last output matches
84
+ * verify:acceptance.json → all frozen host acceptance commands must pass
84
85
  * model:the tests pass → a model judges the transcript
85
86
  * the tests pass → (bare) model-judged
86
87
  */
@@ -99,6 +100,9 @@ export function parseGoalCondition(spec) {
99
100
  case "file":
100
101
  if (!rest) throw new Error("file-exists condition needs a path");
101
102
  return { kind: "file-exists", path: rest, source: raw };
103
+ case "verify":
104
+ if (!rest) throw new Error("verify condition needs a manifest path");
105
+ return { kind: "verify", path: rest, source: raw };
102
106
  case "contains":
103
107
  if (!rest) throw new Error("contains condition needs text");
104
108
  return { kind: "contains", text: rest, source: raw };
@@ -387,9 +391,22 @@ export class GoalConditionEngine {
387
391
  const state = snap?.state;
388
392
  if (
389
393
  !snap?.condition ||
390
- !["model", "exit-zero", "file-exists", "contains", "regex"].includes(
391
- snap.condition.kind,
392
- ) ||
394
+ ![
395
+ "model",
396
+ "exit-zero",
397
+ "file-exists",
398
+ "contains",
399
+ "regex",
400
+ "verify",
401
+ ].includes(snap.condition.kind) ||
402
+ (snap.condition.kind === "verify" &&
403
+ (typeof snap.condition.path !== "string" ||
404
+ !snap.condition.path.trim() ||
405
+ snap.condition.verification?.schema !==
406
+ "chainlesschain.prepared-goal-verification/v1" ||
407
+ !/^sha256:[a-f0-9]{64}$/u.test(
408
+ snap.condition.verification?.digest || "",
409
+ ))) ||
393
410
  !state ||
394
411
  !Number.isSafeInteger(state.outerTurns) ||
395
412
  state.outerTurns < 0 ||
@@ -0,0 +1,221 @@
1
+ import { createHash, randomUUID } from "node:crypto";
2
+ import executionBroker from "./process-execution-broker/index.js";
3
+ import { terminateOwnedProcessTree } from "./process-tree-termination.js";
4
+ import { redactSecrets } from "./secret-scan.js";
5
+
6
+ const MAX_OUTPUT_BYTES = 128 * 1024;
7
+ const RESULT_PREFIX = "CC_GOAL_CHECK_RESULT ";
8
+ export const GOAL_CHECK_RESULT_SCHEMA = "chainlesschain.goal-check-result/v1";
9
+
10
+ function checkReceipt(stdout, check, invocationId) {
11
+ const lines = stdout
12
+ .toString("utf8")
13
+ .split(/\r?\n/u)
14
+ .filter((line) => line.startsWith(RESULT_PREFIX));
15
+ if (lines.length !== 1 || lines[0].length > 16 * 1024) return null;
16
+ try {
17
+ const receipt = JSON.parse(lines[0].slice(RESULT_PREFIX.length));
18
+ if (
19
+ !receipt ||
20
+ typeof receipt !== "object" ||
21
+ Array.isArray(receipt) ||
22
+ Object.keys(receipt).some(
23
+ (key) =>
24
+ !["schema", "checkId", "invocationId", "requirements"].includes(key),
25
+ ) ||
26
+ receipt.schema !== GOAL_CHECK_RESULT_SCHEMA ||
27
+ receipt.checkId !== check.id ||
28
+ receipt.invocationId !== invocationId ||
29
+ !Array.isArray(receipt.requirements) ||
30
+ receipt.requirements.length !== check.requirements.length
31
+ )
32
+ return null;
33
+ const ids = new Set();
34
+ for (const entry of receipt.requirements) {
35
+ if (
36
+ !entry ||
37
+ typeof entry !== "object" ||
38
+ Array.isArray(entry) ||
39
+ Object.keys(entry).some((key) => !["id", "passed"].includes(key)) ||
40
+ !check.requirements.includes(entry.id) ||
41
+ ids.has(entry.id) ||
42
+ entry.passed !== true
43
+ )
44
+ return null;
45
+ ids.add(entry.id);
46
+ }
47
+ return receipt;
48
+ } catch {
49
+ return null;
50
+ }
51
+ }
52
+ export function goalVerificationError(message, reason = "error") {
53
+ return Object.assign(new Error(message), {
54
+ code: "CC_GOAL_VERIFICATION_FAILED",
55
+ goalVerificationFailure: true,
56
+ subtype: "error_goal_verification",
57
+ endReason: reason,
58
+ });
59
+ }
60
+
61
+ export function checkGoalVerificationCancellation(signal) {
62
+ if (signal?.aborted)
63
+ throw goalVerificationError("Goal verification was cancelled", "cancelled");
64
+ }
65
+
66
+ function outputEvidence(bytes, truncated) {
67
+ const text = bytes.toString("utf8");
68
+ const preview =
69
+ text.length <= 4000
70
+ ? text
71
+ : `${text.slice(0, 1980)}\n[... truncated ...]\n${text.slice(-1980)}`;
72
+ return {
73
+ bytes: bytes.length,
74
+ digest: `sha256:${createHash("sha256").update(bytes).digest("hex")}`,
75
+ truncated,
76
+ preview: redactSecrets(preview),
77
+ };
78
+ }
79
+
80
+ /** Execute a user-selected, frozen acceptance command, never model tool text.
81
+ * Use argv without a shell and wait for the actual close / cleanup fence.
82
+ */
83
+ export async function runGoalVerificationCommand(
84
+ check,
85
+ { cwd, signal, timeoutMs } = {},
86
+ ) {
87
+ checkGoalVerificationCancellation(signal);
88
+ return new Promise((resolve, reject) => {
89
+ const startedAt = Date.now();
90
+ const invocationId = randomUUID();
91
+ let child, timer, stopping, stopReason, spawnError;
92
+ let closed = false,
93
+ settled = false,
94
+ exitCode = null,
95
+ exitSignal = null;
96
+ const streams = {
97
+ stdout: { chunks: [], size: 0, truncated: false },
98
+ stderr: { chunks: [], size: 0, truncated: false },
99
+ };
100
+ const finish = (cleanup) => {
101
+ if (settled || (stopping && cleanup === undefined)) return;
102
+ settled = true;
103
+ clearTimeout(timer);
104
+ signal?.removeEventListener("abort", onAbort);
105
+ if (cleanup && !cleanup.confirmed) {
106
+ const error = goalVerificationError(
107
+ "Goal checker process cleanup is unconfirmed; reconcile it before continuing",
108
+ );
109
+ error.cleanup = cleanup;
110
+ error.verification = {
111
+ checkId: check.id,
112
+ status: "cleanup-unconfirmed",
113
+ manualReviewRequired: true,
114
+ cleanup,
115
+ };
116
+ reject(error);
117
+ return;
118
+ }
119
+ if (signal?.aborted || stopReason === "cancelled") {
120
+ reject(
121
+ goalVerificationError("Goal verification was cancelled", "cancelled"),
122
+ );
123
+ return;
124
+ }
125
+ const stdout = Buffer.concat(streams.stdout.chunks);
126
+ const receipt = checkReceipt(stdout, check, invocationId);
127
+ resolve({
128
+ id: check.id,
129
+ invocationId,
130
+ command: { executable: check.executable, args: check.args },
131
+ exitCode: closed && !spawnError ? exitCode : null,
132
+ signal: exitSignal,
133
+ status:
134
+ stopReason ||
135
+ (spawnError
136
+ ? "spawn-failed"
137
+ : exitCode === 0 && !exitSignal
138
+ ? receipt
139
+ ? "passed"
140
+ : "receipt-invalid"
141
+ : "failed"),
142
+ receipt,
143
+ durationMs: Date.now() - startedAt,
144
+ stdout: outputEvidence(stdout, streams.stdout.truncated),
145
+ stderr: outputEvidence(
146
+ Buffer.concat(streams.stderr.chunks),
147
+ streams.stderr.truncated,
148
+ ),
149
+ ...(cleanup ? { cleanup } : {}),
150
+ });
151
+ };
152
+ const stop = (reason) => {
153
+ if (settled || stopping) return;
154
+ stopReason = reason;
155
+ stopping = Promise.resolve().then(() =>
156
+ terminateOwnedProcessTree(child, { alreadyClosed: closed }),
157
+ );
158
+ stopping.then(finish, () => finish({ confirmed: false }));
159
+ };
160
+ const onAbort = () => stop("cancelled");
161
+ try {
162
+ // Acceptance programs do not inherit provider credentials or Node preload
163
+ // hooks. They can read the explicitly selected workspace as ordinary tests.
164
+ const env = Object.fromEntries(
165
+ Object.entries(process.env).filter(([key]) =>
166
+ /^(path|systemroot|windir|temp|tmp|home|userprofile|lang|lc_all)$/i.test(
167
+ key,
168
+ ),
169
+ ),
170
+ );
171
+ env.CC_GOAL_CHECK_ID = check.id;
172
+ env.CC_GOAL_CHECK_INVOCATION = invocationId;
173
+ child = executionBroker.spawn(
174
+ check.executable === "node" ? process.execPath : check.executable,
175
+ check.args,
176
+ {
177
+ cwd,
178
+ env,
179
+ shell: false,
180
+ windowsHide: true,
181
+ detached: process.platform !== "win32",
182
+ stdio: ["ignore", "pipe", "pipe"],
183
+ origin: "headless-goal:verification",
184
+ scope: "headless-goal",
185
+ policy: "allow",
186
+ },
187
+ );
188
+ for (const name of ["stdout", "stderr"])
189
+ child[name]?.on("data", (chunk) => {
190
+ const bytes = Buffer.from(chunk),
191
+ stream = streams[name];
192
+ const remaining = MAX_OUTPUT_BYTES - stream.size;
193
+ if (remaining > 0) {
194
+ const kept = bytes.subarray(0, remaining);
195
+ stream.chunks.push(kept);
196
+ stream.size += kept.length;
197
+ }
198
+ if (bytes.length > remaining) {
199
+ stream.truncated = true;
200
+ stop("output-limit");
201
+ }
202
+ });
203
+ child.once("error", (error) => {
204
+ spawnError = error;
205
+ });
206
+ child.once("close", (code, childSignal) => {
207
+ closed = true;
208
+ exitCode = code;
209
+ exitSignal = childSignal;
210
+ finish();
211
+ });
212
+ timer = setTimeout(() => stop("timed-out"), timeoutMs);
213
+ signal?.addEventListener("abort", onAbort, { once: true });
214
+ if (signal?.aborted) onAbort();
215
+ } catch (error) {
216
+ spawnError = error;
217
+ if (child?.pid) stop("spawn-failed");
218
+ else finish();
219
+ }
220
+ });
221
+ }