chainlesschain 0.166.17 → 0.166.18

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 (210) hide show
  1. package/README.md +14 -7
  2. package/package.json +1 -1
  3. package/src/assets/web-panel/assets/{AIOps-CVW2n2rh.js → AIOps-CQSBl3hY.js} +1 -1
  4. package/src/assets/web-panel/assets/{ActionButton-DtuM163O.js → ActionButton-IQt-vRLt.js} +1 -1
  5. package/src/assets/web-panel/assets/{Analytics-BXvl_qHu.js → Analytics-DkHC8O7k.js} +3 -3
  6. package/src/assets/web-panel/assets/{AppLayout-VDBTFKOp.js → AppLayout-CSti2P2T.js} +3 -3
  7. package/src/assets/web-panel/assets/{Artifacts-BNz2xCiG.js → Artifacts-C57hxn3v.js} +1 -1
  8. package/src/assets/web-panel/assets/{Audit-DTu9Hn9P.js → Audit-DByLntcf.js} +1 -1
  9. package/src/assets/web-panel/assets/{BackgroundAgents-D2OCPzLe.js → BackgroundAgents-D1Bd2EOa.js} +1 -1
  10. package/src/assets/web-panel/assets/{Backup-C9M-vG7G.js → Backup-VstHzHng.js} +1 -1
  11. package/src/assets/web-panel/assets/{BaseInput-BUkCNiUQ.js → BaseInput-CLhdexIf.js} +1 -1
  12. package/src/assets/web-panel/assets/{Chat-OJ2ajF7l.js → Chat-BefC_JZS.js} +6 -6
  13. package/src/assets/web-panel/assets/{ChatBubbleRenderer-BdZt76Ab.js → ChatBubbleRenderer-DbXMvgmn.js} +1 -1
  14. package/src/assets/web-panel/assets/{Checkbox-C1gXKDsc.js → Checkbox-CEY982vx.js} +1 -1
  15. package/src/assets/web-panel/assets/{Codegen-BXbznLg7.js → Codegen-Dcm_DTvJ.js} +1 -1
  16. package/src/assets/web-panel/assets/{Col-CbCq5N0i.js → Col-C8SSu4KA.js} +1 -1
  17. package/src/assets/web-panel/assets/{Community-V8Ks6Yun.js → Community-BVV9vwRR.js} +1 -1
  18. package/src/assets/web-panel/assets/{Compact-DkeHQTpQ.js → Compact-B7c5Vo18.js} +1 -1
  19. package/src/assets/web-panel/assets/{Compliance-JeLKwn4Q.js → Compliance-Tq9jSZ5a.js} +1 -1
  20. package/src/assets/web-panel/assets/{Cowork-azfetcBz.js → Cowork-BJUjT09Q.js} +3 -3
  21. package/src/assets/web-panel/assets/{Cron-Q691i_Gp.js → Cron-CjV9PEaS.js} +2 -2
  22. package/src/assets/web-panel/assets/{Crosschain-BLjDRbr_.js → Crosschain-Dl7ReL8F.js} +1 -1
  23. package/src/assets/web-panel/assets/{DID-D8ptXplK.js → DID-CG8PjWmM.js} +2 -2
  24. package/src/assets/web-panel/assets/{Dashboard-Ctj2VVZL.js → Dashboard-CDBM6wmF.js} +2 -2
  25. package/src/assets/web-panel/assets/{Dropdown-D8VgkMJ8.js → Dropdown-8_55bXTD.js} +1 -1
  26. package/src/assets/web-panel/assets/{EmailListRenderer-CQPe5S6q.js → EmailListRenderer-D3qOU1Cm.js} +1 -1
  27. package/src/assets/web-panel/assets/{FamilyGuardDashboard-ySA-7SiN.js → FamilyGuardDashboard-Bv5oWMZF.js} +1 -1
  28. package/src/assets/web-panel/assets/{Federation-1PMD-fBf.js → Federation-hpZ1xkKd.js} +1 -1
  29. package/src/assets/web-panel/assets/{FormItemContext-C_jr6U4Q.js → FormItemContext-BN7GT191.js} +1 -1
  30. package/src/assets/web-panel/assets/{GenericCardRenderer-Bu3bKf2B.js → GenericCardRenderer-PCRhfA7M.js} +1 -1
  31. package/src/assets/web-panel/assets/{Git-Dv4Fa_T5.js → Git-CIlP2vy7.js} +2 -2
  32. package/src/assets/web-panel/assets/{Governance-DOEy1n1k.js → Governance-81lgm7YL.js} +1 -1
  33. package/src/assets/web-panel/assets/{Inference-DkvqzWcJ.js → Inference-Cs24xMOV.js} +1 -1
  34. package/src/assets/web-panel/assets/{KnowledgeGraph-DdUJK949.js → KnowledgeGraph-CrJLVCZo.js} +1 -1
  35. package/src/assets/web-panel/assets/{Logs-CRelcdUZ.js → Logs-DLyO8RKT.js} +2 -2
  36. package/src/assets/web-panel/assets/{MarkdownRenderer-0AHbbTA4.js → MarkdownRenderer-DBOqijrP.js} +1 -1
  37. package/src/assets/web-panel/assets/{Marketplace-BuuBKsev.js → Marketplace-Dz7AbQZc.js} +1 -1
  38. package/src/assets/web-panel/assets/{McpTools-DlgpEmA1.js → McpTools-BM0aFiWv.js} +3 -3
  39. package/src/assets/web-panel/assets/{Memory-DTfdqUGy.js → Memory-C9SJzENX.js} +2 -2
  40. package/src/assets/web-panel/assets/{MobileBridge-CXLE5ZFO.js → MobileBridge-BO2HnNRk.js} +1 -1
  41. package/src/assets/web-panel/assets/{MobileProjects-Dz25OB0n.js → MobileProjects-CK_jMz0l.js} +1 -1
  42. package/src/assets/web-panel/assets/{Mtc-kEL0fhgD.js → Mtc-CfhrJsdO.js} +2 -2
  43. package/src/assets/web-panel/assets/{MtcAudit-BE4UvFJU.js → MtcAudit-BE2ELxgI.js} +4 -4
  44. package/src/assets/web-panel/assets/{Multisig-CSApSn8c.js → Multisig-CgR_E3Jd.js} +3 -3
  45. package/src/assets/web-panel/assets/{NLProgramming-D11FpKWx.js → NLProgramming-Cw9445_K.js} +1 -1
  46. package/src/assets/web-panel/assets/{Notes-CDL-D2CS.js → Notes-DZimkTrb.js} +3 -3
  47. package/src/assets/web-panel/assets/{NotificationSettings-C0Q6lO-c.js → NotificationSettings-DxHVh4uT.js} +1 -1
  48. package/src/assets/web-panel/assets/OrderTableRenderer-Iy-pnX56.js +1 -0
  49. package/src/assets/web-panel/assets/{Organization-Dc-maVAq.js → Organization-pPXJtWo4.js} +4 -4
  50. package/src/assets/web-panel/assets/{Overflow-B5mUpSvi.js → Overflow-YamdTJwA.js} +1 -1
  51. package/src/assets/web-panel/assets/{P2P-TjXV53wq.js → P2P-BvqP53x7.js} +2 -2
  52. package/src/assets/web-panel/assets/PdhVaultBrowser-Blz1Xn2n.js +7 -0
  53. package/src/assets/web-panel/assets/{Permissions-DKRzQ2O6.js → Permissions-CgFRQqFJ.js} +4 -4
  54. package/src/assets/web-panel/assets/{PersonalDataHub-Dx2eqft8.js → PersonalDataHub-CFeo3-6O.js} +4 -4
  55. package/src/assets/web-panel/assets/{Pipeline-CnYZMB5p.js → Pipeline-BkaRojEK.js} +1 -1
  56. package/src/assets/web-panel/assets/{Privacy-BonKpPnp.js → Privacy-BNZEx2Qp.js} +1 -1
  57. package/src/assets/web-panel/assets/{ProjectInit-DWO0Du3J.js → ProjectInit-HUBOgEEK.js} +2 -2
  58. package/src/assets/web-panel/assets/{ProjectSettings-C9jqyYRv.js → ProjectSettings-CFMmhROS.js} +2 -2
  59. package/src/assets/web-panel/assets/{Projects-CYpKwXbz.js → Projects-Dc517BXp.js} +1 -1
  60. package/src/assets/web-panel/assets/{Providers-CW-fkwJq.js → Providers-DTLf8bgj.js} +1 -1
  61. package/src/assets/web-panel/assets/{QrScannerModal-Cw0J3Zud.js → QrScannerModal-BBNjPszk.js} +1 -1
  62. package/src/assets/web-panel/assets/{QuickAsk-BH4A4IpR.js → QuickAsk-DCsHvk3G.js} +1 -1
  63. package/src/assets/web-panel/assets/{Recommend-CDwMwJus.js → Recommend-Dpr5YSop.js} +1 -1
  64. package/src/assets/web-panel/assets/{RemoteSession-DKIPwzTf.js → RemoteSession-DmKnvqGg.js} +2 -2
  65. package/src/assets/web-panel/assets/{Reputation-CklDj7qS.js → Reputation-CSRfuurX.js} +1 -1
  66. package/src/assets/web-panel/assets/{Row-DJWZKsH0.js → Row-CDj3pQ_w.js} +1 -1
  67. package/src/assets/web-panel/assets/{RssFeed-BfSLCewo.js → RssFeed-DI0a_kNq.js} +2 -2
  68. package/src/assets/web-panel/assets/{Search-B0IST--x.js → Search-jAy7B2nU.js} +1 -1
  69. package/src/assets/web-panel/assets/{Security-h1sYNWtt.js → Security-CkHTqYhc.js} +4 -4
  70. package/src/assets/web-panel/assets/{Services-Gh0-oxI_.js → Services-CP-0Nzga.js} +2 -2
  71. package/src/assets/web-panel/assets/{Skeleton-CNDV_jOs.js → Skeleton-BkF5-p3n.js} +1 -1
  72. package/src/assets/web-panel/assets/{Skills-ByCLTh1n.js → Skills-BDu-utDE.js} +1 -1
  73. package/src/assets/web-panel/assets/{Sla-BfyrJTJz.js → Sla-CQvq_2Qb.js} +1 -1
  74. package/src/assets/web-panel/assets/{SpeechSettings-BQzo9kNX.js → SpeechSettings-T7Ap512g.js} +1 -1
  75. package/src/assets/web-panel/assets/{SyncSettings-B6fS6z_1.js → SyncSettings-Bt-PLvot.js} +2 -2
  76. package/src/assets/web-panel/assets/{Tasks-C-uKCP-l.js → Tasks-yLEcCogg.js} +1 -1
  77. package/src/assets/web-panel/assets/{Templates-D6oDy7wL.js → Templates-ByN3fmbr.js} +1 -1
  78. package/src/assets/web-panel/assets/{Tenant-D3LT2wNQ.js → Tenant-DBI7hITH.js} +1 -1
  79. package/src/assets/web-panel/assets/{Terminal-BteLcv_O.js → Terminal-B77_DlGX.js} +2 -2
  80. package/src/assets/web-panel/assets/{TimelineRenderer-DHHuxfqH.js → TimelineRenderer-CsLTB_QO.js} +1 -1
  81. package/src/assets/web-panel/assets/{Tokens-BRQeykXw.js → Tokens-BV2N6cR8.js} +1 -1
  82. package/src/assets/web-panel/assets/{Trigger-p2XaFWEu.js → Trigger-CjXWGH3p.js} +1 -1
  83. package/src/assets/web-panel/assets/{Trust-BxadBMft.js → Trust-uqXIq3WC.js} +1 -1
  84. package/src/assets/web-panel/assets/{UkeySign-DRBP7LDk.js → UkeySign-D-6qu4vY.js} +1 -1
  85. package/src/assets/web-panel/assets/{VideoEditing-CZ3NZkh7.js → VideoEditing-CxGmx_2e.js} +1 -1
  86. package/src/assets/web-panel/assets/{Wallet-C3NTBN7G.js → Wallet-DSq7WlAg.js} +4 -4
  87. package/src/assets/web-panel/assets/{WebAuthn-C7LVgMlb.js → WebAuthn-CDBiD57O.js} +2 -2
  88. package/src/assets/web-panel/assets/{WorkflowEditor-0_Iveog7.js → WorkflowEditor-Z8f63TSb.js} +1 -1
  89. package/src/assets/web-panel/assets/{chat-DzzluYo3.js → chat-B-UZFBjy.js} +1 -1
  90. package/src/assets/web-panel/assets/{colors-DSMYXpaj.js → colors-CFk7K-7Q.js} +1 -1
  91. package/src/assets/web-panel/assets/{compact-item-W76u1VSV.js → compact-item-X0IVMvgi.js} +1 -1
  92. package/src/assets/web-panel/assets/{createContext-otsESjb5.js → createContext-DWg4j2n6.js} +1 -1
  93. package/src/assets/web-panel/assets/devWarning-B2IW1J_J.js +1 -0
  94. package/src/assets/web-panel/assets/{hasIn-3sNLrvug.js → hasIn-CkVCwNNF.js} +1 -1
  95. package/src/assets/web-panel/assets/{index-BdtmEKat.js → index-5OcZHdzc.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-DS9WYDMf.js → index-B273IY-E.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-NaO9AE-F.js → index-B3-B3FWD.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-BcGJtmHM.js → index-BB4KHHcv.js} +1 -1
  99. package/src/assets/web-panel/assets/index-BCp2ir-1.js +1 -0
  100. package/src/assets/web-panel/assets/{index-pVm_iUre.js → index-BG-GaZri.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-BpcQYzP7.js → index-BPBia4b-.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-BXLx9HfA.js → index-BipwEbTA.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-uSCkbpZH.js → index-BoskgPt9.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-DMmdIpLA.js → index-Btqk6zWb.js} +1 -1
  105. package/src/assets/web-panel/assets/index-Bw4iuzRD.js +1 -0
  106. package/src/assets/web-panel/assets/{index-DLDh1OW3.js → index-BzXjYUmd.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-B9X_jqXe.js → index-C1ZAOJRW.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-vBKPcmAP.js → index-CCLwoATF.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-vUmYkqmu.js → index-CDfSD07S.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-D7A5U2IH.js → index-CLlP1E4X.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-ClOFeZ-t.js → index-CMCEXBRh.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-Cg86EzNp.js → index-CN8HZlLH.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-Ddd4mird.js → index-CNKFsBlz.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-CE7tSow-.js → index-CUBkvFPH.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-GlIOE4ja.js → index-Ca0mij1n.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-DdU7IkKX.js → index-CbIAWbma.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-UUHCwfNq.js → index-CbihMThv.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-BRsD1PT2.js → index-CvOa-IFV.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-C2aht9-M.js → index-Cvwu_rA_.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-BJsQio5O.js → index-D-EJNxgR.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-q7ftLqNt.js → index-D8uEL8Uw.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-B1I1AYJs.js → index-D92g4l3n.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-DZKAzEge.js → index-DCqpl_E_.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-CKoFyHYQ.js → index-DLSBks8h.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-BDlDO2px.js → index-Db_5xhrU.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-CENWwjef.js → index-DcDggpWR.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-DH4cl52p.js → index-DeWKPQGs.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-DTA8Iavv.js → index-DhVHoqGL.js} +3 -3
  129. package/src/assets/web-panel/assets/{index-DmpaC2yk.js → index-DyWlOuak.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-BA8mZxd-.js → index-LU54bChK.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-CtFOt5x1.js → index-OjnAwUJo.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-B5LOYdYm.js → index-P83LDnCz.js} +1 -1
  133. package/src/assets/web-panel/assets/{index-MhQQ3h8q.js → index-_-9k3Tna.js} +1 -1
  134. package/src/assets/web-panel/assets/{initDefaultProps-DF6llUXV.js → initDefaultProps-CFNgY8lJ.js} +1 -1
  135. package/src/assets/web-panel/assets/{motion-vtDV8_5K.js → motion-D-5RrDzn.js} +1 -1
  136. package/src/assets/web-panel/assets/{move-B6c0bdy2.js → move-DN-L0Bd-.js} +1 -1
  137. package/src/assets/web-panel/assets/{mtc-parser-DlLYWuBK.js → mtc-parser-6mgLSeCK.js} +1 -1
  138. package/src/assets/web-panel/assets/{omit-BH0zOxLN.js → omit-ClWW8eTP.js} +1 -1
  139. package/src/assets/web-panel/assets/{pickAttrs-D9di8_In.js → pickAttrs-Vystq3R8.js} +1 -1
  140. package/src/assets/web-panel/assets/{placementArrow-BDSngufM.js → placementArrow-D0H9hK4W.js} +1 -1
  141. package/src/assets/web-panel/assets/{responsiveObserve-C_EawMvP.js → responsiveObserve-B3iNRU-a.js} +1 -1
  142. package/src/assets/web-panel/assets/{slide-B_4wShxA.js → slide-CiMXe6am.js} +1 -1
  143. package/src/assets/web-panel/assets/{statusUtils-CbQu6qJ-.js → statusUtils-CGDZJ1uT.js} +1 -1
  144. package/src/assets/web-panel/assets/{styleChecker-CvXJWYXb.js → styleChecker-D2zA6NkY.js} +1 -1
  145. package/src/assets/web-panel/assets/{useFlexGapSupport-jjY1XknO.js → useFlexGapSupport-C1sYU6QE.js} +1 -1
  146. package/src/assets/web-panel/assets/{useFs-CMXBdsK_.js → useFs-BzUHSjg2.js} +1 -1
  147. package/src/assets/web-panel/assets/{usePersonalDataHub-YbAhhPXx.js → usePersonalDataHub-CxB5yZCq.js} +1 -1
  148. package/src/assets/web-panel/assets/{vnode-BFCTKc0H.js → vnode-BfUfMwtc.js} +1 -1
  149. package/src/assets/web-panel/assets/{zoom-CY9aBl5O.js → zoom-CFYmj1TO.js} +1 -1
  150. package/src/assets/web-panel/index.html +1 -1
  151. package/src/command-help-index.json +1 -1
  152. package/src/commands/agent.js +80 -2
  153. package/src/commands/evolution.js +33 -27
  154. package/src/commands/serve.js +11 -2
  155. package/src/data/changelog.json +5 -5
  156. package/src/gateways/ws/session-protocol.js +1 -0
  157. package/src/gateways/ws/ws-agent-handler.js +70 -2
  158. package/src/gateways/ws/ws-server.js +8 -0
  159. package/src/lib/app-server/cli-agent-kernel-adapter.js +4 -0
  160. package/src/lib/app-server/graph-runtime.js +115 -8
  161. package/src/lib/app-server/server.js +21 -2
  162. package/src/lib/app-server/websocket-transport.js +2 -0
  163. package/src/lib/evolution/agent-evolution-ingress.js +300 -0
  164. package/src/lib/evolution/agent-evolution-runtime-composition-brand.js +22 -0
  165. package/src/lib/evolution/agent-evolution-runtime-composition.js +369 -0
  166. package/src/lib/evolution/evidence-backed-wiki-maintainer.js +752 -0
  167. package/src/lib/evolution/evolution-artifact-ports.js +48 -0
  168. package/src/lib/evolution/evolution-eval-gate.js +11 -4
  169. package/src/lib/evolution/evolution-evidence-artifact-adapter.js +499 -0
  170. package/src/lib/evolution/evolution-evidence-projector.js +61 -1
  171. package/src/lib/evolution/evolution-file-witness.js +601 -0
  172. package/src/lib/evolution/evolution-ledger-file-backend.js +176 -0
  173. package/src/lib/evolution/evolution-ledger-ports.js +353 -16
  174. package/src/lib/evolution/evolution-ledger.js +1355 -54
  175. package/src/lib/evolution/evolution-run-ledger-adapter.js +409 -0
  176. package/src/lib/evolution/evolution-run-wiki-maintenance-source.js +300 -0
  177. package/src/lib/evolution/scheduled-batch-wiki-maintenance-source.js +368 -0
  178. package/src/lib/evolution/skill-candidate-registry.js +649 -0
  179. package/src/lib/evolution/skill-promotion-controller.js +109 -38
  180. package/src/lib/evolution/skill-promotion-review-ledger-adapter.js +451 -0
  181. package/src/lib/evolution/skill-promotion-review.js +793 -0
  182. package/src/lib/evolution/skill-registry-transition-capability.js +55 -0
  183. package/src/lib/evolution/skill-registry-transition-ledger-adapter.js +1280 -0
  184. package/src/lib/evolution/skill-registry-transition-source.js +372 -0
  185. package/src/lib/evolution/skill-release-registry.js +2191 -11
  186. package/src/lib/evolution/skill-target-matrix-eval.js +133 -10
  187. package/src/lib/evolution/structured-memory-agent-control-plane.js +222 -0
  188. package/src/lib/evolution/structured-memory-authority-ledger-adapter.js +351 -0
  189. package/src/lib/evolution/structured-memory-ledger-adapter.js +220 -0
  190. package/src/lib/evolution/structured-memory-policy-receipt-writer.js +164 -0
  191. package/src/lib/evolution/structured-memory-post-compact-hook.js +87 -0
  192. package/src/lib/evolution/structured-memory-promotion-receipt-writer.js +221 -0
  193. package/src/lib/evolution/structured-memory-semantic-review-pipeline.js +313 -0
  194. package/src/lib/evolution/wiki-maintainer-ledger-adapter.js +200 -0
  195. package/src/lib/evolution/wiki-maintenance-trigger-ledger-adapter.js +687 -0
  196. package/src/lib/evolution-system.js +65 -30
  197. package/src/lib/mcp-lifecycle-authority.js +21 -2
  198. package/src/lib/remote-approval-bridge.js +24 -0
  199. package/src/lib/scheduler-kernel/store.js +62 -14
  200. package/src/repl/agent-repl.js +45 -0
  201. package/src/runtime/agent-runtime.js +114 -1
  202. package/src/runtime/headless-runner.js +19 -0
  203. package/src/runtime/headless-stream.js +43 -0
  204. package/src/runtime/runtime-factory.js +19 -1
  205. package/src/assets/web-panel/assets/OrderTableRenderer-ZRE0OKbj.js +0 -1
  206. package/src/assets/web-panel/assets/PdhVaultBrowser-DvV2btIr.js +0 -7
  207. package/src/assets/web-panel/assets/devWarning-BztaXF84.js +0 -1
  208. package/src/assets/web-panel/assets/index-4jP_hG_4.js +0 -1
  209. package/src/assets/web-panel/assets/index-zxwuAXL5.js +0 -1
  210. package/src/lib/learning/learning-hooks.js +0 -123
@@ -17,9 +17,9 @@ import {
17
17
  } from "./skill-execution-manifest.js";
18
18
 
19
19
  export const SKILL_TARGET_MATRIX_EVAL_PLAN_SCHEMA =
20
- "chainlesschain.skill-target-matrix-eval-plan/v1";
20
+ "chainlesschain.skill-target-matrix-eval-plan/v2";
21
21
  export const SKILL_TARGET_MATRIX_EVAL_RECEIPT_SCHEMA =
22
- "chainlesschain.skill-target-matrix-eval-receipt/v1";
22
+ "chainlesschain.skill-target-matrix-eval-receipt/v2";
23
23
  export const SKILL_TARGET_MATRIX_EVAL_PLAN_RESOLUTION_SCHEMA =
24
24
  "chainlesschain.skill-target-matrix-eval-plan-resolution/v1";
25
25
  export const SKILL_TARGET_MATRIX_EVAL_RESERVATION_SCHEMA =
@@ -38,15 +38,15 @@ export const SKILL_TARGET_MATRIX_EVAL_DEADLINE_CODE =
38
38
 
39
39
  /**
40
40
  * This module commits trusted composition metadata and performs an all-cell
41
- * conjunction. It is not a proof of JavaScript callable bytes and it is not a
42
- * cross-cell statistical production gate.
41
+ * conjunction with a preregistered family-wise confidence correction. It is
42
+ * not a proof of JavaScript callable bytes or a production grader deployment.
43
43
  */
44
44
  export const SKILL_TARGET_MATRIX_EVAL_FOUNDATION_SEMANTICS = Object.freeze({
45
45
  kind: "trusted-composition-configuration-commitment",
46
46
  decision: "all-cells-conjunction",
47
47
  cellSettlement:
48
48
  "trusted-composition-bound-total-settlement-window-before-root-deadline",
49
- crossCellStatistics: false,
49
+ crossCellStatistics: "bonferroni-two-sided-family-wise-confidence",
50
50
  requiresAttestedLoader: true,
51
51
  residuals: Object.freeze([
52
52
  "attested descriptor-to-callable loader",
@@ -100,6 +100,8 @@ const PLAN_INPUT_KEYS = new Set([
100
100
  "matrixAuthorityRoot",
101
101
  "maxTotalWallClockMs",
102
102
  "aggregateReceiptTtlMs",
103
+ "familywiseErrorRate",
104
+ "comparisonCorrection",
103
105
  "issuedAt",
104
106
  "expiresAt",
105
107
  "cells",
@@ -232,6 +234,7 @@ const CELL_RESULT_KEYS = new Set([
232
234
  "evaluationContextDigest",
233
235
  "childReceiptDigest",
234
236
  "childFullDigest",
237
+ "confidenceZ",
235
238
  "decision",
236
239
  "reasonCodes",
237
240
  "issuedAt",
@@ -257,6 +260,8 @@ const RECEIPT_KEYS = new Set([
257
260
  "planIssuedAt",
258
261
  "planExpiresAt",
259
262
  "aggregateReceiptTtlMs",
263
+ "familywiseErrorRate",
264
+ "comparisonCorrection",
260
265
  "planAuthentication",
261
266
  "reservation",
262
267
  "finalization",
@@ -494,6 +499,71 @@ function normalizeInteger(value, label, { minimum = 0, maximum } = {}) {
494
499
  return value;
495
500
  }
496
501
 
502
+ function normalizeFinite(value, label, { minimum, maximum } = {}) {
503
+ if (
504
+ typeof value !== "number" ||
505
+ !Number.isFinite(value) ||
506
+ (minimum !== undefined && value < minimum) ||
507
+ (maximum !== undefined && value > maximum)
508
+ ) {
509
+ throw matrixError(
510
+ SKILL_TARGET_MATRIX_EVAL_INVALID_CODE,
511
+ `${label} must be a finite number in range`,
512
+ );
513
+ }
514
+ return value;
515
+ }
516
+
517
+ // Peter J. Acklam's rational approximation. The returned quantile is used
518
+ // only to verify a preregistered confidence bound, never to manufacture one
519
+ // after observing evaluation outcomes.
520
+ function standardNormalQuantile(probability) {
521
+ const p = normalizeFinite(probability, "normal quantile probability", {
522
+ minimum: Number.EPSILON,
523
+ maximum: 1 - Number.EPSILON,
524
+ });
525
+ const a = [
526
+ -39.69683028665376, 220.9460984245205, -275.9285104469687, 138.357751867269,
527
+ -30.66479806614716, 2.506628277459239,
528
+ ];
529
+ const b = [
530
+ -54.47609879822406, 161.5858368580409, -155.6989798598866,
531
+ 66.80131188771972, -13.28068155288572,
532
+ ];
533
+ const c = [
534
+ -0.007784894002430293, -0.3223964580411365, -2.400758277161838,
535
+ -2.549732539343734, 4.374664141464968, 2.938163982698783,
536
+ ];
537
+ const d = [
538
+ 0.007784695709041462, 0.3224671290700398, 2.445134137142996,
539
+ 3.754408661907416,
540
+ ];
541
+ const low = 0.02425;
542
+ const high = 1 - low;
543
+ if (p < low) {
544
+ const q = Math.sqrt(-2 * Math.log(p));
545
+ return (
546
+ (((((c[0] * q + c[1]) * q + c[2]) * q + c[3]) * q + c[4]) * q + c[5]) /
547
+ ((((d[0] * q + d[1]) * q + d[2]) * q + d[3]) * q + 1)
548
+ );
549
+ }
550
+ if (p > high) return -standardNormalQuantile(1 - p);
551
+ const q = p - 0.5;
552
+ const r = q * q;
553
+ return (
554
+ ((((((a[0] * r + a[1]) * r + a[2]) * r + a[3]) * r + a[4]) * r + a[5]) *
555
+ q) /
556
+ (((((b[0] * r + b[1]) * r + b[2]) * r + b[3]) * r + b[4]) * r + 1)
557
+ );
558
+ }
559
+
560
+ function requiredFamilywiseConfidenceZ(familywiseErrorRate, cellCount) {
561
+ const comparisonCount = cellCount * 2;
562
+ return standardNormalQuantile(
563
+ 1 - familywiseErrorRate / (2 * comparisonCount),
564
+ );
565
+ }
566
+
497
567
  function normalizeTimestamp(value, label) {
498
568
  if (typeof value !== "string" || value.length > 64) {
499
569
  throw matrixError(
@@ -982,6 +1052,20 @@ function planCore(input) {
982
1052
  "plan.aggregateReceiptTtlMs",
983
1053
  { minimum: 1_000, maximum: MAX_RECEIPT_TTL_MS },
984
1054
  ),
1055
+ familywiseErrorRate: normalizeFinite(
1056
+ input.familywiseErrorRate,
1057
+ "plan.familywiseErrorRate",
1058
+ { minimum: 0.001, maximum: 0.1 },
1059
+ ),
1060
+ comparisonCorrection:
1061
+ input.comparisonCorrection === "bonferroni-two-sided"
1062
+ ? input.comparisonCorrection
1063
+ : (() => {
1064
+ throw matrixError(
1065
+ SKILL_TARGET_MATRIX_EVAL_INVALID_CODE,
1066
+ "plan.comparisonCorrection is invalid",
1067
+ );
1068
+ })(),
985
1069
  issuedAt: issued.timestamp,
986
1070
  expiresAt: expires.timestamp,
987
1071
  cells: normalizePlanCells(input.cells),
@@ -2017,7 +2101,7 @@ async function reservePlan(state, plan, deadlineMs, wallDeadlineAt) {
2017
2101
  return validated.snapshot;
2018
2102
  }
2019
2103
 
2020
- function deriveMatrixDecision(cellResults) {
2104
+ function deriveMatrixDecision(cellResults, statisticalPlan) {
2021
2105
  let decision = "accepted";
2022
2106
  let reasonCodes = ["MATRIX_ALL_CELLS_ACCEPTED"];
2023
2107
  if (cellResults.some((cell) => cell.decision === "rejected")) {
@@ -2028,6 +2112,18 @@ function deriveMatrixDecision(cellResults) {
2028
2112
  ) {
2029
2113
  decision = "needs-more-evidence";
2030
2114
  reasonCodes = ["MATRIX_CELL_NEEDS_MORE_EVIDENCE"];
2115
+ } else if (
2116
+ cellResults.some(
2117
+ (cell) =>
2118
+ cell.confidenceZ + Number.EPSILON <
2119
+ requiredFamilywiseConfidenceZ(
2120
+ statisticalPlan.familywiseErrorRate,
2121
+ cellResults.length,
2122
+ ),
2123
+ )
2124
+ ) {
2125
+ decision = "needs-more-evidence";
2126
+ reasonCodes = ["MATRIX_FAMILYWISE_CONFIDENCE_INSUFFICIENT"];
2031
2127
  }
2032
2128
  return deepFreeze({ decision, reasonCodes: deepFreeze(reasonCodes) });
2033
2129
  }
@@ -2049,6 +2145,8 @@ function matrixDecisionCommitment(input) {
2049
2145
  targetMatrixRoot: input.plan.targetMatrixRoot,
2050
2146
  matrixAuthorityRoot: input.plan.matrixAuthorityRoot,
2051
2147
  planDigest: input.plan.planDigest,
2148
+ familywiseErrorRate: input.plan.familywiseErrorRate,
2149
+ comparisonCorrection: input.plan.comparisonCorrection,
2052
2150
  planAuthenticationDigest: input.planAuthentication.evidenceDigest,
2053
2151
  reservationReceiptDigest: input.reservation.receiptDigest,
2054
2152
  cellCount: input.cellResults.length,
@@ -2219,6 +2317,10 @@ function normalizeCellResult(value, label) {
2219
2317
  value.childFullDigest,
2220
2318
  `${label}.childFullDigest`,
2221
2319
  ),
2320
+ confidenceZ: normalizeFinite(value.confidenceZ, `${label}.confidenceZ`, {
2321
+ minimum: 1.64,
2322
+ maximum: 4,
2323
+ }),
2222
2324
  decision: normalizeDecision(value.decision, `${label}.decision`),
2223
2325
  reasonCodes: normalizeReasonCodes(
2224
2326
  value.reasonCodes,
@@ -2358,7 +2460,7 @@ function verifyMatrixReceiptStructure(
2358
2460
  const reservation = normalizeStandaloneReservation(snapshot.reservation);
2359
2461
  const finalization = normalizeStandaloneFinalization(snapshot.finalization);
2360
2462
  const cellResults = normalizeCellResults(snapshot.cellResults);
2361
- const decision = deriveMatrixDecision(cellResults);
2463
+ const decision = deriveMatrixDecision(cellResults, snapshot);
2362
2464
  const normalized = deepFreeze({
2363
2465
  schema: SKILL_TARGET_MATRIX_EVAL_RECEIPT_SCHEMA,
2364
2466
  matrixEvalId: normalizeId(snapshot.matrixEvalId, "receipt.matrixEvalId"),
@@ -2413,6 +2515,20 @@ function verifyMatrixReceiptStructure(
2413
2515
  "receipt.aggregateReceiptTtlMs",
2414
2516
  { minimum: 1_000, maximum: MAX_RECEIPT_TTL_MS },
2415
2517
  ),
2518
+ familywiseErrorRate: normalizeFinite(
2519
+ snapshot.familywiseErrorRate,
2520
+ "receipt.familywiseErrorRate",
2521
+ { minimum: 0.001, maximum: 0.1 },
2522
+ ),
2523
+ comparisonCorrection:
2524
+ snapshot.comparisonCorrection === "bonferroni-two-sided"
2525
+ ? snapshot.comparisonCorrection
2526
+ : (() => {
2527
+ throw matrixError(
2528
+ SKILL_TARGET_MATRIX_EVAL_INVALID_CODE,
2529
+ "receipt.comparisonCorrection is invalid",
2530
+ );
2531
+ })(),
2416
2532
  planAuthentication,
2417
2533
  reservation,
2418
2534
  finalization,
@@ -2459,7 +2575,7 @@ function verifyMatrixReceiptStructure(
2459
2575
  reasonCodes: decision.reasonCodes,
2460
2576
  });
2461
2577
  const expectedCommitmentDigest = domainDigest(
2462
- "chainlesschain.skill-target-matrix-eval-decision-commitment/v1",
2578
+ "chainlesschain.skill-target-matrix-eval-decision-commitment/v2",
2463
2579
  expectedCommitment,
2464
2580
  "matrix decision commitment",
2465
2581
  );
@@ -2880,6 +2996,11 @@ export class SkillTargetMatrixEvalAggregator {
2880
2996
  verifiedSnapshot,
2881
2997
  `matrix cell ${planCell.cellId} verified full receipt`,
2882
2998
  ),
2999
+ confidenceZ: normalizeFinite(
3000
+ verifiedSnapshot.confidenceZ,
3001
+ `matrix cell ${planCell.cellId} confidenceZ`,
3002
+ { minimum: 1.64, maximum: 4 },
3003
+ ),
2883
3004
  decision: normalizeDecision(
2884
3005
  verifiedSnapshot.decision,
2885
3006
  `matrix cell ${planCell.cellId} decision`,
@@ -2895,7 +3016,7 @@ export class SkillTargetMatrixEvalAggregator {
2895
3016
  }
2896
3017
  const normalizedCells = normalizeCellResults(cellResults);
2897
3018
  const root = childReceiptRoot(normalizedCells);
2898
- const derived = deriveMatrixDecision(normalizedCells);
3019
+ const derived = deriveMatrixDecision(normalizedCells, plan);
2899
3020
  const commitment = matrixDecisionCommitment({
2900
3021
  plan,
2901
3022
  planAuthentication: resolved.authentication,
@@ -2906,7 +3027,7 @@ export class SkillTargetMatrixEvalAggregator {
2906
3027
  reasonCodes: derived.reasonCodes,
2907
3028
  });
2908
3029
  const decisionCommitmentDigest = domainDigest(
2909
- "chainlesschain.skill-target-matrix-eval-decision-commitment/v1",
3030
+ "chainlesschain.skill-target-matrix-eval-decision-commitment/v2",
2910
3031
  commitment,
2911
3032
  "matrix decision commitment",
2912
3033
  );
@@ -2953,6 +3074,8 @@ export class SkillTargetMatrixEvalAggregator {
2953
3074
  planIssuedAt: plan.issuedAt,
2954
3075
  planExpiresAt: plan.expiresAt,
2955
3076
  aggregateReceiptTtlMs: plan.aggregateReceiptTtlMs,
3077
+ familywiseErrorRate: plan.familywiseErrorRate,
3078
+ comparisonCorrection: plan.comparisonCorrection,
2956
3079
  planAuthentication: resolved.authentication,
2957
3080
  reservation,
2958
3081
  finalization,
@@ -0,0 +1,222 @@
1
+ import structuredMemory from "@chainlesschain/session-core/structured-evolution-memory";
2
+ import { StructuredMemoryLedgerAdapter } from "./structured-memory-ledger-adapter.js";
3
+ import { StructuredMemoryAuthorityLedgerAdapter } from "./structured-memory-authority-ledger-adapter.js";
4
+ import { captureStructuredMemoryPromotionReceiptWriter } from "./structured-memory-promotion-receipt-writer.js";
5
+ import { captureStructuredMemoryPolicyReceiptWriter } from "./structured-memory-policy-receipt-writer.js";
6
+ import { createStructuredMemorySemanticReviewPipeline } from "./structured-memory-semantic-review-pipeline.js";
7
+ import { createSkillEvaluatedPromotionControlPlane } from "./skill-promotion-controller.js";
8
+
9
+ const { captureStructuredMemoryAuthority } = structuredMemory;
10
+
11
+ export const STRUCTURED_MEMORY_AGENT_CONTROL_PLANE_SCHEMA =
12
+ "chainlesschain.structured-memory-agent-control-plane/v1";
13
+
14
+ const CONTROL_PLANES = new WeakSet();
15
+
16
+ function sameStorage(left, right) {
17
+ return (
18
+ left.tenantId === right.tenantId &&
19
+ left.artifactTenantId === right.artifactTenantId &&
20
+ left.streamId === right.streamId &&
21
+ left.audience === right.audience &&
22
+ left.purpose === right.purpose
23
+ );
24
+ }
25
+
26
+ export function createStructuredMemoryAgentControlPlane({
27
+ memoryAdapter,
28
+ authorityAdapter,
29
+ critic,
30
+ evaluator,
31
+ proposerAuthority,
32
+ governorAuthority,
33
+ promotionAuthority,
34
+ promotionReceiptWriter,
35
+ policyReceiptWriter,
36
+ } = {}) {
37
+ if (!(memoryAdapter instanceof StructuredMemoryLedgerAdapter)) {
38
+ throw new TypeError("a StructuredMemoryLedgerAdapter is required");
39
+ }
40
+ if (!(authorityAdapter instanceof StructuredMemoryAuthorityLedgerAdapter)) {
41
+ throw new TypeError("a StructuredMemoryAuthorityLedgerAdapter is required");
42
+ }
43
+ if (!sameStorage(memoryAdapter.descriptor, authorityAdapter.descriptor)) {
44
+ throw new Error(
45
+ "memory and authority adapters must share one durable stream",
46
+ );
47
+ }
48
+ const promotion = captureStructuredMemoryPromotionReceiptWriter(
49
+ promotionReceiptWriter,
50
+ );
51
+ const policy =
52
+ captureStructuredMemoryPolicyReceiptWriter(policyReceiptWriter);
53
+ const tenantId = memoryAdapter.descriptor.tenantId;
54
+ const promotionActor = captureStructuredMemoryAuthority(promotionAuthority, {
55
+ tenantId,
56
+ role: "promotion-controller",
57
+ actorType: "service",
58
+ });
59
+ if (
60
+ promotion.descriptor.tenantId !== tenantId ||
61
+ policy.descriptor.tenantId !== tenantId
62
+ ) {
63
+ throw new Error(
64
+ "memory receipt writers must share the control-plane tenant",
65
+ );
66
+ }
67
+
68
+ // createMemory() performs the authoritative event/snapshot replay and rejects
69
+ // invalid lineage before any producer can receive the resulting capability.
70
+ const memory = memoryAdapter.createMemory();
71
+ const semantic = createStructuredMemorySemanticReviewPipeline({
72
+ tenantId,
73
+ memory,
74
+ authorityStore: authorityAdapter,
75
+ critic,
76
+ evaluator,
77
+ proposerAuthority,
78
+ governorAuthority,
79
+ });
80
+ const appendPromotionMemory = async (authorityReceipt) => {
81
+ if (
82
+ authorityReceipt?.kind !== "promotion" ||
83
+ authorityReceipt.tenantId !== tenantId ||
84
+ authorityReceipt.layer !== "procedural" ||
85
+ authorityReceipt.action !== "accept" ||
86
+ authorityReceipt.decision !== "accepted"
87
+ ) {
88
+ throw new Error("invalid durable Memory promotion authority receipt");
89
+ }
90
+ const existing = memory.projection().memories[authorityReceipt.memoryId];
91
+ if (existing) {
92
+ if (
93
+ existing.layer !== "procedural" ||
94
+ existing.status !== "active" ||
95
+ existing.contentDigest !== authorityReceipt.contentDigest ||
96
+ existing.artifactRef !== authorityReceipt.artifactRef ||
97
+ existing.receipts?.promotion !== authorityReceipt.receiptDigest
98
+ ) {
99
+ throw new Error(
100
+ "persisted procedural memory conflicts with the promotion receipt",
101
+ );
102
+ }
103
+ return Object.freeze({
104
+ status: "recovered",
105
+ memory: existing,
106
+ projection: memory.projection(),
107
+ });
108
+ }
109
+ return memory.append({
110
+ eventId: `promotion-${authorityReceipt.receiptDigest.slice("sha256:".length)}`,
111
+ memoryId: authorityReceipt.memoryId,
112
+ layer: "procedural",
113
+ action: "accept",
114
+ authority: promotionActor,
115
+ automatic: true,
116
+ contentDigest: authorityReceipt.contentDigest,
117
+ artifactRef: authorityReceipt.artifactRef,
118
+ evidenceRefs: authorityReceipt.evidenceRefs,
119
+ supersedes: [],
120
+ receiptRefs: { promotion: authorityReceipt.receiptDigest },
121
+ timestamp: authorityReceipt.issuedAt,
122
+ metadata: {
123
+ promotionAuthorityReceiptDigest: authorityReceipt.receiptDigest,
124
+ },
125
+ });
126
+ };
127
+ const reconcilePromotionMemories = async () => {
128
+ const receipts = await authorityAdapter.listReceipts("promotion");
129
+ const reconciled = [];
130
+ for (const receipt of receipts) {
131
+ const transition = await appendPromotionMemory(receipt);
132
+ reconciled.push(
133
+ Object.freeze({
134
+ receiptDigest: receipt.receiptDigest,
135
+ status: transition.status ?? "persisted",
136
+ }),
137
+ );
138
+ }
139
+ return Object.freeze({
140
+ status: "converged",
141
+ receiptCount: receipts.length,
142
+ reconciled: Object.freeze(reconciled),
143
+ projection: memory.projection(),
144
+ });
145
+ };
146
+ const controlPlane = Object.freeze({
147
+ schema: STRUCTURED_MEMORY_AGENT_CONTROL_PLANE_SCHEMA,
148
+ tenantId,
149
+ streamId: memoryAdapter.descriptor.streamId,
150
+ memory,
151
+ semantic,
152
+ promotionReceiptWriter: promotion,
153
+ policyReceiptWriter: policy,
154
+ reconcilePromotionMemories: Object.freeze(reconcilePromotionMemories),
155
+ createEvaluatedPromotionControlPlane(options = {}) {
156
+ if (
157
+ !options ||
158
+ typeof options !== "object" ||
159
+ Array.isArray(options) ||
160
+ Object.hasOwn(options, "memoryPromotionReceiptWriter")
161
+ ) {
162
+ throw new TypeError(
163
+ "evaluated promotion options cannot override the Agent memory writer",
164
+ );
165
+ }
166
+ const evaluated = createSkillEvaluatedPromotionControlPlane({
167
+ ...options,
168
+ memoryPromotionReceiptWriter: promotion,
169
+ });
170
+ const recordPromotionMemory = async (result) => {
171
+ const authorityReceipt = result?.memoryAuthorityReceipt;
172
+ const release = result?.release;
173
+ if (
174
+ !authorityReceipt ||
175
+ authorityReceipt.contentDigest !== release?.contentDigest ||
176
+ authorityReceipt.artifactRef !== release?.releaseDigest
177
+ ) {
178
+ throw new Error(
179
+ "evaluated promotion result lacks its durable Memory authority receipt",
180
+ );
181
+ }
182
+ return appendPromotionMemory(authorityReceipt);
183
+ };
184
+ return Object.freeze({
185
+ ...evaluated,
186
+ promoteEvaluated: Object.freeze(async (input) => {
187
+ const result = await evaluated.promoteEvaluated(input);
188
+ try {
189
+ const memoryTransition = await recordPromotionMemory(result);
190
+ return Object.freeze({ ...result, memoryTransition });
191
+ } catch (cause) {
192
+ const error = new Error(
193
+ "release committed but procedural Memory persistence is pending",
194
+ { cause },
195
+ );
196
+ error.code = "CC_PROMOTION_MEMORY_COMMIT_PENDING";
197
+ error.commitState = "release-committed-memory-pending";
198
+ error.promotionResult = result;
199
+ throw error;
200
+ }
201
+ }),
202
+ recordPromotionMemory: Object.freeze(recordPromotionMemory),
203
+ });
204
+ },
205
+ recovery: Object.freeze({
206
+ sequence: memory.projection().sequence,
207
+ projectionDigest: memory.projection().projectionDigest,
208
+ snapshotDigest: memory.snapshot()?.snapshotDigest ?? null,
209
+ }),
210
+ });
211
+ CONTROL_PLANES.add(controlPlane);
212
+ return controlPlane;
213
+ }
214
+
215
+ export function captureStructuredMemoryAgentControlPlane(value) {
216
+ if (!CONTROL_PLANES.has(value)) {
217
+ throw new TypeError(
218
+ "a branded structured memory Agent control plane is required",
219
+ );
220
+ }
221
+ return value;
222
+ }