chainlesschain 0.166.64 → 0.166.68

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 (199) hide show
  1. package/README.md +29 -12
  2. package/package.json +4 -4
  3. package/src/assets/web-panel/assets/{AIOps-BFbLDWTF.js → AIOps-CXkSNOGY.js} +1 -1
  4. package/src/assets/web-panel/assets/{ActionButton-CAHMtgNB.js → ActionButton-ysMR6gTs.js} +1 -1
  5. package/src/assets/web-panel/assets/{Analytics-CkrSj0oR.js → Analytics-WGZ0sWuw.js} +3 -3
  6. package/src/assets/web-panel/assets/{AppLayout-BTb0Ws1l.js → AppLayout-Cs2iRlQG.js} +4 -4
  7. package/src/assets/web-panel/assets/{Artifacts-C2Pgepj-.js → Artifacts-5IdfxWz0.js} +1 -1
  8. package/src/assets/web-panel/assets/{Audit-ZweyxXW8.js → Audit-U9V434QX.js} +1 -1
  9. package/src/assets/web-panel/assets/{BackgroundAgents-BS8tAnzP.js → BackgroundAgents-BvFwxPlC.js} +1 -1
  10. package/src/assets/web-panel/assets/{Backup-CLkG_74M.js → Backup-C9yTr9hO.js} +1 -1
  11. package/src/assets/web-panel/assets/{BaseInput-MIfNcdUZ.js → BaseInput-BdsSwUgE.js} +1 -1
  12. package/src/assets/web-panel/assets/{Chat-DBwqlWWr.js → Chat-BB_2oBgH.js} +5 -5
  13. package/src/assets/web-panel/assets/ChatBubbleRenderer-Bpf1hDUl.js +1 -0
  14. package/src/assets/web-panel/assets/{Checkbox-DdBYhlVX.js → Checkbox-v6M5m7dK.js} +1 -1
  15. package/src/assets/web-panel/assets/{Codegen-BR6MhiDo.js → Codegen-CtouWSIz.js} +1 -1
  16. package/src/assets/web-panel/assets/{Col-yO-5EbbM.js → Col-CqQJ4ORW.js} +1 -1
  17. package/src/assets/web-panel/assets/{Community-B608q_m7.js → Community-BO__QCOy.js} +1 -1
  18. package/src/assets/web-panel/assets/{Compact-BmVHi7Z7.js → Compact-D0Kq4xlH.js} +1 -1
  19. package/src/assets/web-panel/assets/{Compliance-BQ-DzutA.js → Compliance-BSLKKBjA.js} +1 -1
  20. package/src/assets/web-panel/assets/{Cowork-BEfLyXvi.js → Cowork-VsujXW5o.js} +3 -3
  21. package/src/assets/web-panel/assets/{Cron-Cld6NX-_.js → Cron-j8DbLGi5.js} +2 -2
  22. package/src/assets/web-panel/assets/{Crosschain-CUA3nDId.js → Crosschain-DWpYH1yN.js} +1 -1
  23. package/src/assets/web-panel/assets/{DID-DSI3E9zv.js → DID-mLaRxLQh.js} +2 -2
  24. package/src/assets/web-panel/assets/{Dashboard-CoWtEdhO.js → Dashboard-Cff033Jr.js} +2 -2
  25. package/src/assets/web-panel/assets/{Dropdown-CGhZ1Dyy.js → Dropdown-B1Upt6fP.js} +1 -1
  26. package/src/assets/web-panel/assets/{EmailListRenderer-BHZe2K5q.js → EmailListRenderer-CPtb8joV.js} +1 -1
  27. package/src/assets/web-panel/assets/{EvolutionSettings-Corjo98k.js → EvolutionSettings-CVh4Uv4g.js} +1 -1
  28. package/src/assets/web-panel/assets/{FamilyGuardDashboard-dPSWF3Pt.js → FamilyGuardDashboard-CrD1PhbF.js} +1 -1
  29. package/src/assets/web-panel/assets/{Federation-DT-Zr78c.js → Federation-ftxrvqW5.js} +1 -1
  30. package/src/assets/web-panel/assets/{FormItemContext-CzKq63B0.js → FormItemContext-9O80slC1.js} +1 -1
  31. package/src/assets/web-panel/assets/{GenericCardRenderer-CDkKrmu0.js → GenericCardRenderer-DaYvYIj9.js} +1 -1
  32. package/src/assets/web-panel/assets/{Git-BrwRnLOv.js → Git-BKZh0YE5.js} +2 -2
  33. package/src/assets/web-panel/assets/{Governance-C4PtCzod.js → Governance-vWbN873j.js} +1 -1
  34. package/src/assets/web-panel/assets/{Inference-CVPv5nwa.js → Inference-BN6RR-l8.js} +1 -1
  35. package/src/assets/web-panel/assets/{KnowledgeGraph-CmT9lvED.js → KnowledgeGraph-x49x9m7Q.js} +1 -1
  36. package/src/assets/web-panel/assets/{Logs-DaRgv7pL.js → Logs-Co2EPLsJ.js} +2 -2
  37. package/src/assets/web-panel/assets/{MarkdownRenderer-B3zZwlSz.js → MarkdownRenderer-D7wIB-c7.js} +1 -1
  38. package/src/assets/web-panel/assets/{Marketplace-Bm0GGEaL.js → Marketplace-DpPu6XQp.js} +1 -1
  39. package/src/assets/web-panel/assets/{McpTools-71L5h0en.js → McpTools-BR0ksiax.js} +3 -3
  40. package/src/assets/web-panel/assets/{Memory-BoWrfASi.js → Memory-BXznJ5-C.js} +2 -2
  41. package/src/assets/web-panel/assets/{MobileBridge-Dp4FcX_-.js → MobileBridge-BHSOpfv7.js} +1 -1
  42. package/src/assets/web-panel/assets/{MobileProjects-00ja0Z7O.js → MobileProjects-DdWmgIup.js} +1 -1
  43. package/src/assets/web-panel/assets/{Mtc-BZF6YNYp.js → Mtc-D9Rk_IGT.js} +4 -4
  44. package/src/assets/web-panel/assets/{MtcAudit-Bp_vcI6H.js → MtcAudit--i8q1lKc.js} +2 -2
  45. package/src/assets/web-panel/assets/{Multisig-CnCo56CS.js → Multisig-BHnNG7R9.js} +3 -3
  46. package/src/assets/web-panel/assets/{NLProgramming-BCSzNHpv.js → NLProgramming-Duo1ij2_.js} +1 -1
  47. package/src/assets/web-panel/assets/{Notes-kXoQk8B7.js → Notes-B44Le73p.js} +3 -3
  48. package/src/assets/web-panel/assets/{NotificationSettings-oN-1fkcy.js → NotificationSettings-C3oy_7Gf.js} +1 -1
  49. package/src/assets/web-panel/assets/{OrderTableRenderer-5ZVHrVZ9.js → OrderTableRenderer-Da_73SI5.js} +1 -1
  50. package/src/assets/web-panel/assets/{Organization-D4_T9Tdc.js → Organization-ChsSwKxT.js} +4 -4
  51. package/src/assets/web-panel/assets/{Overflow-d8vZwo9w.js → Overflow-DR5G_cCn.js} +1 -1
  52. package/src/assets/web-panel/assets/{P2P-0HGUdmTv.js → P2P-yfaobqow.js} +2 -2
  53. package/src/assets/web-panel/assets/PdhVaultBrowser-DgimH6Jp.js +7 -0
  54. package/src/assets/web-panel/assets/{Permissions-XHd6pVQB.js → Permissions-DhinFvtE.js} +4 -4
  55. package/src/assets/web-panel/assets/{PersonalDataHub-CB5bZU9T.js → PersonalDataHub-CfeNVic1.js} +3 -3
  56. package/src/assets/web-panel/assets/{Pipeline-Dy_qx4-0.js → Pipeline-CGKO26Nk.js} +1 -1
  57. package/src/assets/web-panel/assets/{Privacy-BgR0-uEu.js → Privacy-CxxfYEJh.js} +1 -1
  58. package/src/assets/web-panel/assets/{ProjectInit-DAcRi1Nx.js → ProjectInit-CZsaAab9.js} +2 -2
  59. package/src/assets/web-panel/assets/{ProjectSettings-Bd1Q0rK_.js → ProjectSettings-BUm_6clQ.js} +2 -2
  60. package/src/assets/web-panel/assets/{Projects-DVc9DcbM.js → Projects-Capr8bVq.js} +1 -1
  61. package/src/assets/web-panel/assets/{Providers-C3c4QfUT.js → Providers-D28VqPja.js} +1 -1
  62. package/src/assets/web-panel/assets/{QrScannerModal-Ba_GbitW.js → QrScannerModal-Cj200vUb.js} +1 -1
  63. package/src/assets/web-panel/assets/{QuickAsk-CSn5tIkO.js → QuickAsk-BGpnEiam.js} +1 -1
  64. package/src/assets/web-panel/assets/{Recommend-B3-8PLX0.js → Recommend-Ix79Tpni.js} +1 -1
  65. package/src/assets/web-panel/assets/{RemoteSession-Bd_7Zmi-.js → RemoteSession-BdGAFbIk.js} +2 -2
  66. package/src/assets/web-panel/assets/{Reputation-BU2A_wy5.js → Reputation-B1Lis0Wk.js} +1 -1
  67. package/src/assets/web-panel/assets/{Row-I0JFMjCz.js → Row-Ba_okwOW.js} +1 -1
  68. package/src/assets/web-panel/assets/{RssFeed-CNc4Dgfz.js → RssFeed-DDbEuI-m.js} +3 -3
  69. package/src/assets/web-panel/assets/{Search-uAA6ceLl.js → Search-D89wAkMy.js} +1 -1
  70. package/src/assets/web-panel/assets/{Security-U1SWj5nP.js → Security-CJKCKAU-.js} +3 -3
  71. package/src/assets/web-panel/assets/{Services-BFjZ5ASY.js → Services-mitEc1XV.js} +2 -2
  72. package/src/assets/web-panel/assets/{Skeleton-B8InBvQf.js → Skeleton-CnBjLDfX.js} +1 -1
  73. package/src/assets/web-panel/assets/{Skills-BDYwf3QV.js → Skills-DSzDYvH3.js} +1 -1
  74. package/src/assets/web-panel/assets/{Sla-Dcc6iq3q.js → Sla-CglJ_4p3.js} +1 -1
  75. package/src/assets/web-panel/assets/SpeechSettings-BicWJS7f.js +1 -0
  76. package/src/assets/web-panel/assets/{SyncSettings-BNHEYO95.js → SyncSettings-Cq7o6fmr.js} +2 -2
  77. package/src/assets/web-panel/assets/{Tasks-JbV6L1FX.js → Tasks-DOxFOBpU.js} +1 -1
  78. package/src/assets/web-panel/assets/{Templates-Yp0CUTBz.js → Templates-bY0wSbQM.js} +1 -1
  79. package/src/assets/web-panel/assets/{Tenant-CToNYxCo.js → Tenant-BAyyl0qX.js} +1 -1
  80. package/src/assets/web-panel/assets/{Terminal-D7W9UqSD.js → Terminal-BGBhSpqc.js} +2 -2
  81. package/src/assets/web-panel/assets/{TimelineRenderer-B7rqc1kE.js → TimelineRenderer-BvW5lXYz.js} +1 -1
  82. package/src/assets/web-panel/assets/{Tokens-QP7K4ppA.js → Tokens-Ua_LIx8-.js} +1 -1
  83. package/src/assets/web-panel/assets/{Trigger-CAWowQCR.js → Trigger-BGwb2KL1.js} +1 -1
  84. package/src/assets/web-panel/assets/{Trust-B-0XOP97.js → Trust-CD2IEHvj.js} +1 -1
  85. package/src/assets/web-panel/assets/{UkeySign-BtiZbiuj.js → UkeySign-D5LetK6P.js} +1 -1
  86. package/src/assets/web-panel/assets/{VideoEditing-Dee11JI0.js → VideoEditing-oP7ehFgR.js} +1 -1
  87. package/src/assets/web-panel/assets/{Wallet-y7qOmaWY.js → Wallet-BBtu4-xa.js} +4 -4
  88. package/src/assets/web-panel/assets/{WebAuthn-CjyRRWGK.js → WebAuthn-iSPRU4Ht.js} +3 -3
  89. package/src/assets/web-panel/assets/{WorkflowEditor-D7Kiz25Q.js → WorkflowEditor-DuEDhQmB.js} +1 -1
  90. package/src/assets/web-panel/assets/{chat-4F_yB-Gw.js → chat-DGDgqvvm.js} +1 -1
  91. package/src/assets/web-panel/assets/{colors-CrczPd-t.js → colors-DGQMWa1-.js} +1 -1
  92. package/src/assets/web-panel/assets/{compact-item-AenPL6fz.js → compact-item-COVznBL4.js} +1 -1
  93. package/src/assets/web-panel/assets/{createContext-BcwoqPgi.js → createContext-DIxVeHXI.js} +1 -1
  94. package/src/assets/web-panel/assets/devWarning-CjR9h-Z_.js +1 -0
  95. package/src/assets/web-panel/assets/{hasIn-YouHmap8.js → hasIn-DkxZO3E9.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-fCuM1NPH.js → index-0ToBFsvW.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-D0dXNgvi.js → index-2JZizEPc.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-BHA5Fyjc.js → index-BAL2p7YC.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-CedvtJA_.js → index-BAlrovUm.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-5GHNjmnt.js → index-BBw2MLIe.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-C5hpEYbx.js → index-BHH95jcm.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-D8a1AEVK.js → index-BOTshZNx.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-D7m5Z4We.js → index-BQm7ntcn.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-D_4VsL-L.js → index-BUqwlzc8.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-GP5u18DV.js → index-BY6MSbWT.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-CHNKoexH.js → index-BY9Ossof.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-DNHmbdGm.js → index-BgM-3a1w.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-YX4dcbgh.js → index-Bv0_u0ze.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-D5Rvq67L.js → index-C3XeNS82.js} +3 -3
  110. package/src/assets/web-panel/assets/{index-DAGfuEUu.js → index-C3bN6751.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-CZT-LLGS.js → index-CNRRrP3-.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-4r7B8sTx.js → index-CV0KnNqR.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-B5Vmr0CM.js → index-CcNGQWum.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-DE3qPp9l.js → index-Ci34vbh0.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-CWgIKCVS.js → index-ClQVcrFt.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-31dhJpt3.js → index-Cligb-Dl.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-BsGhFk79.js → index-CokrhbY2.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-B_I1INkw.js → index-CpZxDiVK.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-BaguGDJP.js → index-CyMHF2Bi.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-DPrzFdCg.js → index-DDwPBGdA.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-gy1H_PJk.js → index-DU1ArKl5.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-DAh5KwVL.js → index-DV0H83eS.js} +1 -1
  123. package/src/assets/web-panel/assets/index-D_nxBMX5.js +1 -0
  124. package/src/assets/web-panel/assets/{index-q_9aqSgF.js → index-DaWQSp5a.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-B8EXHVmM.js → index-DmduvOYT.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-DVrgnhfu.js → index-ECoDhyH3.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-BwUqDg9_.js → index-ZcqTvPnt.js} +1 -1
  128. package/src/assets/web-panel/assets/{index--xwN0ZvG.js → index-b2_M6o20.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-CZ9Ikuo6.js → index-b_0qTo8O.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-BoVeUGhC.js → index-dfYkGovV.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-COgeZETv.js → index-jo7DbU0w.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-Dfw3WyZU.js → index-usmG13jq.js} +1 -1
  133. package/src/assets/web-panel/assets/{index-BzyDSW_e.js → index-vXrktF3e.js} +1 -1
  134. package/src/assets/web-panel/assets/index-z_cTUMX-.js +1 -0
  135. package/src/assets/web-panel/assets/{initDefaultProps-Ci6zc6ZA.js → initDefaultProps-CkSeiBwL.js} +1 -1
  136. package/src/assets/web-panel/assets/{motion-DS3kjIxw.js → motion-CSzhDP0s.js} +1 -1
  137. package/src/assets/web-panel/assets/{move-DCdWAKk4.js → move-mgCt4iC6.js} +1 -1
  138. package/src/assets/web-panel/assets/{mtc-parser-B0Wfce9U.js → mtc-parser-BEZBLcKt.js} +1 -1
  139. package/src/assets/web-panel/assets/{omit-Clx9TR6z.js → omit-BsHctMEr.js} +1 -1
  140. package/src/assets/web-panel/assets/{pickAttrs-CqSiqUvN.js → pickAttrs-1BHamnGW.js} +1 -1
  141. package/src/assets/web-panel/assets/{placementArrow-BWe_v-40.js → placementArrow--Vb4Bd7l.js} +1 -1
  142. package/src/assets/web-panel/assets/{responsiveObserve-BSJ68bw6.js → responsiveObserve-DD33SqCm.js} +1 -1
  143. package/src/assets/web-panel/assets/{slide-VRPlLxZB.js → slide-DfrLtxgK.js} +1 -1
  144. package/src/assets/web-panel/assets/{statusUtils-BFBVDPdB.js → statusUtils-D9Pe_gXW.js} +1 -1
  145. package/src/assets/web-panel/assets/{styleChecker-CehOXy1f.js → styleChecker-0NY5iMun.js} +1 -1
  146. package/src/assets/web-panel/assets/{useFlexGapSupport-BCOdfK18.js → useFlexGapSupport-DSsZstwg.js} +1 -1
  147. package/src/assets/web-panel/assets/{useFs-BMKrjfJQ.js → useFs-BU8HyH59.js} +1 -1
  148. package/src/assets/web-panel/assets/{usePersonalDataHub-BIjZ7IgI.js → usePersonalDataHub-D_xttink.js} +1 -1
  149. package/src/assets/web-panel/assets/{vnode-oD0MXddQ.js → vnode-39VhX2lM.js} +1 -1
  150. package/src/assets/web-panel/assets/{zoom-D7WqH2Ai.js → zoom-D5KQ8Pks.js} +1 -1
  151. package/src/assets/web-panel/index.html +1 -1
  152. package/src/data/changelog.json +33 -7
  153. package/src/lib/dependency-install-policy.js +1 -1
  154. package/src/lib/evolution/browser-download-action-authority.js +747 -0
  155. package/src/lib/evolution/browser-download-artifact-disposal-authority.js +436 -0
  156. package/src/lib/evolution/browser-filesystem-quarantine-custody.js +2453 -0
  157. package/src/lib/evolution/browser-filesystem-quarantine-disposal.js +36 -0
  158. package/src/lib/evolution/browser-keyboard-action-authority.js +560 -0
  159. package/src/lib/evolution/browser-navigation-action-authority.js +546 -0
  160. package/src/lib/evolution/browser-quarantine-lock-maintenance-authority.js +573 -0
  161. package/src/lib/evolution/browser-quarantine-operator-revocation-authority.js +442 -0
  162. package/src/lib/evolution/browser-quarantine-retention-authority.js +503 -0
  163. package/src/lib/evolution/browser-quarantine-retention-scheduler.js +207 -0
  164. package/src/lib/evolution/browser-quarantined-download-executor.js +525 -0
  165. package/src/lib/evolution/browser-tab-open-action-authority.js +491 -0
  166. package/src/lib/evolution/browser-vision-action-authority.js +444 -0
  167. package/src/lib/evolution/browser-vision-observation-authority.js +304 -0
  168. package/src/lib/evolution/evolution-deployment-loader.js +202 -1
  169. package/src/lib/evolution/evolution-eval-child-evidence-ledger-adapter.js +5 -0
  170. package/src/lib/evolution/evolution-eval-gate.js +2 -1
  171. package/src/lib/evolution/evolution-eval-process-supervisor-worker.mjs +71 -9
  172. package/src/lib/evolution/evolution-eval-process-supervisor.js +276 -9
  173. package/src/lib/evolution/evolution-workbench-metrics.js +81 -21
  174. package/src/lib/evolution/pm-exploration-benchmark.js +747 -0
  175. package/src/lib/evolution/pm-exploration-budget-executor.js +106 -9
  176. package/src/lib/evolution/pm-exploration-egress-authority.js +382 -0
  177. package/src/lib/evolution/pm-exploration-evidence-bundle.js +149 -44
  178. package/src/lib/evolution/pm-exploration-execution-host.js +1254 -8
  179. package/src/lib/evolution/pm-exploration-process-grader.js +458 -0
  180. package/src/lib/evolution/pm-exploration-process-reviewer.js +456 -0
  181. package/src/lib/evolution/pm-exploration-process-runner.js +500 -0
  182. package/src/lib/evolution/pm-exploration-receipts.js +211 -11
  183. package/src/lib/evolution/pm-exploration-recovery-snapshot-store.js +465 -46
  184. package/src/lib/evolution/pm-exploration-transition-committer.js +185 -34
  185. package/src/lib/evolution/skill-outcome-index-authority.js +7 -3
  186. package/src/lib/governance-coverage.js +1 -1
  187. package/src/lib/headless-manifest.js +1 -1
  188. package/src/lib/protocol-replay.js +1 -1
  189. package/src/lib/read-file-loop-guard.js +5 -8
  190. package/src/lib/remote-read-loop-guard.js +25 -18
  191. package/src/lib/skill-outcome-transcript-authority.js +45 -5
  192. package/src/lib/tool-recovery-result.js +11 -0
  193. package/src/runtime/agent-core.js +26 -3
  194. package/src/assets/web-panel/assets/ChatBubbleRenderer-6T0uoJuS.js +0 -1
  195. package/src/assets/web-panel/assets/PdhVaultBrowser-Cx8vp92z.js +0 -7
  196. package/src/assets/web-panel/assets/SpeechSettings-C3Ta-mC9.js +0 -1
  197. package/src/assets/web-panel/assets/devWarning-C4qWsAvh.js +0 -1
  198. package/src/assets/web-panel/assets/index-C-ltOW-O.js +0 -1
  199. package/src/assets/web-panel/assets/index-D7Ir0TiS.js +0 -1
@@ -0,0 +1,304 @@
1
+ import { createHash } from "node:crypto";
2
+ import { types } from "node:util";
3
+
4
+ export const BROWSER_VISION_OBSERVATION_AUTHORITY_DESCRIPTOR_SCHEMA =
5
+ "chainlesschain.browser-vision-observation-authority-descriptor/v1";
6
+ export const BROWSER_VISION_OBSERVATION_REQUEST_SCHEMA =
7
+ "chainlesschain.browser-vision-observation-request/v1";
8
+ export const BROWSER_VISION_OBSERVATION_RECEIPT_SCHEMA =
9
+ "chainlesschain.browser-vision-observation-receipt/v1";
10
+
11
+ const DIGEST = /^sha256:[a-f0-9]{64}$/u;
12
+ const ID = /^[A-Za-z0-9._:-]{1,128}$/u;
13
+ const OPERATIONS = new Set(["analyze", "locate", "compare", "describe", "ocr"]);
14
+ const authorities = new WeakMap();
15
+
16
+ function canonical(value) {
17
+ if (value === null || typeof value === "boolean")
18
+ return JSON.stringify(value);
19
+ if (typeof value === "number" && Number.isFinite(value))
20
+ return JSON.stringify(value);
21
+ if (typeof value === "string") return JSON.stringify(value);
22
+ if (Array.isArray(value)) return `[${value.map(canonical).join(",")}]`;
23
+ return `{${Object.keys(value)
24
+ .sort()
25
+ .map((key) => `${JSON.stringify(key)}:${canonical(value[key])}`)
26
+ .join(",")}}`;
27
+ }
28
+
29
+ function digest(domain, value) {
30
+ return `sha256:${createHash("sha256")
31
+ .update(`${domain}\0`)
32
+ .update(canonical(value))
33
+ .digest("hex")}`;
34
+ }
35
+
36
+ function exactObject(value, keys, label) {
37
+ if (
38
+ !value ||
39
+ typeof value !== "object" ||
40
+ Array.isArray(value) ||
41
+ types.isProxy(value) ||
42
+ ![Object.prototype, null].includes(Object.getPrototypeOf(value)) ||
43
+ Object.keys(value).sort().join("\0") !== [...keys].sort().join("\0")
44
+ ) {
45
+ throw new TypeError(`${label} has an invalid shape`);
46
+ }
47
+ for (const key of keys) {
48
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
49
+ if (!descriptor?.enumerable || !("value" in descriptor))
50
+ throw new TypeError(`${label} must contain plain data`);
51
+ }
52
+ }
53
+
54
+ function snapshotJson(value, label) {
55
+ let nodes = 0;
56
+ const visit = (entry, depth) => {
57
+ if (++nodes > 2048 || depth > 12)
58
+ throw new TypeError(`${label} exceeds its structure budget`);
59
+ if (
60
+ entry === null ||
61
+ typeof entry === "boolean" ||
62
+ (typeof entry === "number" && Number.isFinite(entry)) ||
63
+ typeof entry === "string"
64
+ ) {
65
+ return entry;
66
+ }
67
+ if (
68
+ !entry ||
69
+ typeof entry !== "object" ||
70
+ types.isProxy(entry) ||
71
+ ![Object.prototype, null, Array.prototype].includes(
72
+ Object.getPrototypeOf(entry),
73
+ )
74
+ ) {
75
+ throw new TypeError(`${label} must be finite plain JSON data`);
76
+ }
77
+ if (Array.isArray(entry))
78
+ return Object.freeze(entry.map((v) => visit(v, depth + 1)));
79
+ const output = {};
80
+ for (const key of Object.keys(entry)) {
81
+ const descriptor = Object.getOwnPropertyDescriptor(entry, key);
82
+ if (!descriptor?.enumerable || !("value" in descriptor))
83
+ throw new TypeError(`${label} must contain plain data`);
84
+ output[key] = visit(descriptor.value, depth + 1);
85
+ }
86
+ return Object.freeze(output);
87
+ };
88
+ const snapshot = visit(value, 0);
89
+ if (Buffer.byteLength(canonical(snapshot), "utf8") > 16 * 1024)
90
+ throw new TypeError(`${label} exceeds its byte budget`);
91
+ return snapshot;
92
+ }
93
+
94
+ function normalizeDescriptor(value) {
95
+ const keys = [
96
+ "schema",
97
+ "authorityId",
98
+ "tenantId",
99
+ "handlerArtifactDigest",
100
+ "policyRevision",
101
+ "maxGrantTtlMs",
102
+ ];
103
+ exactObject(value, keys, "browser vision authority descriptor");
104
+ if (
105
+ value.schema !== BROWSER_VISION_OBSERVATION_AUTHORITY_DESCRIPTOR_SCHEMA ||
106
+ !ID.test(value.authorityId) ||
107
+ !ID.test(value.tenantId) ||
108
+ !DIGEST.test(value.handlerArtifactDigest) ||
109
+ !ID.test(value.policyRevision) ||
110
+ !Number.isSafeInteger(value.maxGrantTtlMs) ||
111
+ value.maxGrantTtlMs < 1 ||
112
+ value.maxGrantTtlMs > 60_000
113
+ ) {
114
+ throw new TypeError("browser vision authority descriptor is invalid");
115
+ }
116
+ return Object.freeze({ ...value });
117
+ }
118
+
119
+ function normalizeRequest(value) {
120
+ const keys = [
121
+ "schema",
122
+ "requestId",
123
+ "targetId",
124
+ "operation",
125
+ "senderId",
126
+ "frameUrlDigest",
127
+ "inputDigest",
128
+ "authorization",
129
+ "requestedAt",
130
+ ];
131
+ exactObject(value, keys, "browser vision observation request");
132
+ const requestedAtMs = Date.parse(value.requestedAt);
133
+ if (
134
+ value.schema !== BROWSER_VISION_OBSERVATION_REQUEST_SCHEMA ||
135
+ !ID.test(value.requestId) ||
136
+ typeof value.targetId !== "string" ||
137
+ value.targetId.length < 1 ||
138
+ value.targetId.length > 512 ||
139
+ !OPERATIONS.has(value.operation) ||
140
+ !Number.isSafeInteger(value.senderId) ||
141
+ value.senderId < 1 ||
142
+ !DIGEST.test(value.frameUrlDigest) ||
143
+ !DIGEST.test(value.inputDigest) ||
144
+ !Number.isFinite(requestedAtMs)
145
+ ) {
146
+ throw new TypeError("browser vision observation request is invalid");
147
+ }
148
+ const authorization = snapshotJson(
149
+ value.authorization,
150
+ "browser vision observation authorization",
151
+ );
152
+ return Object.freeze({ ...value, authorization, requestedAtMs });
153
+ }
154
+
155
+ function requestEvidence(request) {
156
+ const authorizationDigest = digest(
157
+ "chainlesschain.browser-vision-observation-authorization/v1",
158
+ request.authorization,
159
+ );
160
+ const core = {
161
+ schema: request.schema,
162
+ requestId: request.requestId,
163
+ targetId: request.targetId,
164
+ operation: request.operation,
165
+ senderId: request.senderId,
166
+ frameUrlDigest: request.frameUrlDigest,
167
+ inputDigest: request.inputDigest,
168
+ authorizationDigest,
169
+ requestedAt: request.requestedAt,
170
+ };
171
+ return Object.freeze({
172
+ ...core,
173
+ requestDigest: digest(
174
+ "chainlesschain.browser-vision-observation-request/v1",
175
+ core,
176
+ ),
177
+ });
178
+ }
179
+
180
+ function normalizeDecision(value) {
181
+ if (
182
+ !value ||
183
+ typeof value !== "object" ||
184
+ Array.isArray(value) ||
185
+ types.isProxy(value) ||
186
+ ![Object.prototype, null].includes(Object.getPrototypeOf(value))
187
+ ) {
188
+ throw new TypeError("browser vision observation decision is invalid");
189
+ }
190
+ const decisionDescriptor = Object.getOwnPropertyDescriptor(value, "decision");
191
+ if (!decisionDescriptor?.enumerable || !("value" in decisionDescriptor))
192
+ throw new TypeError(
193
+ "browser vision observation decision must be plain data",
194
+ );
195
+ if (decisionDescriptor.value === "deny") {
196
+ const keys = Object.hasOwn(value, "reason")
197
+ ? ["decision", "reason"]
198
+ : ["decision"];
199
+ exactObject(value, keys, "browser vision observation decision");
200
+ const reason = Object.hasOwn(value, "reason") ? value.reason : null;
201
+ if (reason !== null && (typeof reason !== "string" || reason.length > 512))
202
+ throw new TypeError(
203
+ "browser vision observation denial reason is invalid",
204
+ );
205
+ return Object.freeze({ decision: "deny", reason });
206
+ }
207
+ exactObject(
208
+ value,
209
+ ["decision", "authorizationEvidenceRef", "validUntil"],
210
+ "browser vision observation decision",
211
+ );
212
+ if (decisionDescriptor.value !== "allow")
213
+ throw new TypeError("browser vision observation decision is invalid");
214
+ return Object.freeze({
215
+ decision: "allow",
216
+ authorizationEvidenceRef: value.authorizationEvidenceRef,
217
+ validUntil: value.validUntil,
218
+ });
219
+ }
220
+
221
+ export function createBrowserVisionObservationAuthority({
222
+ descriptor,
223
+ authorize,
224
+ now = () => Date.now(),
225
+ } = {}) {
226
+ const normalizedDescriptor = normalizeDescriptor(descriptor);
227
+ if (typeof authorize !== "function" || types.isProxy(authorize))
228
+ throw new TypeError("browser vision observation authorize port is invalid");
229
+ if (typeof now !== "function" || types.isProxy(now))
230
+ throw new TypeError("browser vision observation clock is invalid");
231
+ const authority = Object.freeze({});
232
+ authorities.set(authority, {
233
+ descriptor: normalizedDescriptor,
234
+ authorize,
235
+ now,
236
+ });
237
+ return authority;
238
+ }
239
+
240
+ export function captureBrowserVisionObservationAuthority(value) {
241
+ const captured = authorities.get(value);
242
+ if (!captured)
243
+ throw new TypeError(
244
+ "A branded browser vision observation authority is required",
245
+ );
246
+ return Object.freeze({
247
+ descriptor: captured.descriptor,
248
+ authorizeObservation: async (value) => {
249
+ const request = normalizeRequest(value);
250
+ const evidence = requestEvidence(request);
251
+ const decision = normalizeDecision(
252
+ await captured.authorize(
253
+ Object.freeze({ ...request, requestDigest: evidence.requestDigest }),
254
+ ),
255
+ );
256
+ if (decision.decision !== "allow") {
257
+ const error = new Error(
258
+ decision.reason ?? "Browser vision observation was denied",
259
+ );
260
+ error.code = "BROWSER_VISION_OBSERVATION_DENIED";
261
+ throw error;
262
+ }
263
+ const nowMs = captured.now();
264
+ const validUntilMs = Date.parse(decision.validUntil);
265
+ if (
266
+ typeof decision.authorizationEvidenceRef !== "string" ||
267
+ decision.authorizationEvidenceRef.length < 1 ||
268
+ decision.authorizationEvidenceRef.length > 512 ||
269
+ !Number.isFinite(nowMs) ||
270
+ !Number.isFinite(validUntilMs) ||
271
+ validUntilMs <= nowMs ||
272
+ validUntilMs > nowMs + captured.descriptor.maxGrantTtlMs
273
+ ) {
274
+ throw new Error("Browser vision observation decision is invalid");
275
+ }
276
+ const authorizedAt = new Date(nowMs).toISOString();
277
+ const core = {
278
+ schema: BROWSER_VISION_OBSERVATION_RECEIPT_SCHEMA,
279
+ authorityId: captured.descriptor.authorityId,
280
+ tenantId: captured.descriptor.tenantId,
281
+ policyRevision: captured.descriptor.policyRevision,
282
+ handlerArtifactDigest: captured.descriptor.handlerArtifactDigest,
283
+ requestId: request.requestId,
284
+ targetId: request.targetId,
285
+ operation: request.operation,
286
+ senderId: request.senderId,
287
+ frameUrlDigest: request.frameUrlDigest,
288
+ inputDigest: request.inputDigest,
289
+ authorizationDigest: evidence.authorizationDigest,
290
+ requestDigest: evidence.requestDigest,
291
+ authorizationEvidenceRef: decision.authorizationEvidenceRef,
292
+ authorizedAt,
293
+ validUntil: new Date(validUntilMs).toISOString(),
294
+ };
295
+ return Object.freeze({
296
+ ...core,
297
+ receiptDigest: digest(
298
+ "chainlesschain.browser-vision-observation-receipt/v1",
299
+ core,
300
+ ),
301
+ });
302
+ },
303
+ });
304
+ }
@@ -264,6 +264,23 @@ async function loadBuiltInFactories(commandName) {
264
264
  provider,
265
265
  settlementAdapter,
266
266
  businessGrader,
267
+ egressAuthority,
268
+ processSupervisor,
269
+ childEvidenceStore,
270
+ browserVisionObservation,
271
+ browserVisionAction,
272
+ browserNavigationAction,
273
+ browserKeyboardAction,
274
+ browserTabOpenAction,
275
+ browserDownloadAction,
276
+ browserQuarantinedDownloadExecutor,
277
+ browserFilesystemQuarantineCustody,
278
+ browserFilesystemQuarantineDisposal,
279
+ browserQuarantineRetention,
280
+ browserQuarantineRetentionScheduler,
281
+ browserQuarantineOperatorRevocation,
282
+ browserQuarantineLockMaintenance,
283
+ browserDownloadArtifactDisposal,
267
284
  ledgerPorts,
268
285
  artifactPorts,
269
286
  ledgerBackend,
@@ -279,6 +296,23 @@ async function loadBuiltInFactories(commandName) {
279
296
  import("./pm-exploration-volcengine-provider.js"),
280
297
  import("./pm-exploration-provider-settlement-adapter.js"),
281
298
  import("./pm-exploration-business-grader.js"),
299
+ import("./pm-exploration-egress-authority.js"),
300
+ import("./evolution-eval-process-supervisor.js"),
301
+ import("./evolution-eval-child-evidence-ledger-adapter.js"),
302
+ import("./browser-vision-observation-authority.js"),
303
+ import("./browser-vision-action-authority.js"),
304
+ import("./browser-navigation-action-authority.js"),
305
+ import("./browser-keyboard-action-authority.js"),
306
+ import("./browser-tab-open-action-authority.js"),
307
+ import("./browser-download-action-authority.js"),
308
+ import("./browser-quarantined-download-executor.js"),
309
+ import("./browser-filesystem-quarantine-custody.js"),
310
+ import("./browser-filesystem-quarantine-disposal.js"),
311
+ import("./browser-quarantine-retention-authority.js"),
312
+ import("./browser-quarantine-retention-scheduler.js"),
313
+ import("./browser-quarantine-operator-revocation-authority.js"),
314
+ import("./browser-quarantine-lock-maintenance-authority.js"),
315
+ import("./browser-download-artifact-disposal-authority.js"),
282
316
  import("./evolution-ledger-ports.js"),
283
317
  import("./evolution-artifact-ports.js"),
284
318
  import("./evolution-ledger-file-backend.js"),
@@ -303,15 +337,39 @@ async function loadBuiltInFactories(commandName) {
303
337
  receipts.inspectPmExplorationReceiptAuthority,
304
338
  createPmExplorationExecutionManifest:
305
339
  execution.createPmExplorationExecutionManifest,
340
+ createPmExplorationProcessCurriculum:
341
+ execution.createPmExplorationProcessCurriculum,
342
+ inspectPmExplorationCurriculumIsolation:
343
+ execution.inspectPmExplorationCurriculumIsolation,
306
344
  createPmExplorationRunner: execution.createPmExplorationRunner,
345
+ createPmExplorationProcessRunner:
346
+ execution.createPmExplorationProcessRunner,
347
+ inspectPmExplorationRunnerIsolation:
348
+ execution.inspectPmExplorationRunnerIsolation,
307
349
  createPmExplorationGrader: execution.createPmExplorationGrader,
350
+ createPmExplorationProcessGrader:
351
+ execution.createPmExplorationProcessGrader,
352
+ inspectPmExplorationGraderIsolation:
353
+ execution.inspectPmExplorationGraderIsolation,
308
354
  createPmExplorationMerger: execution.createPmExplorationMerger,
355
+ createPmExplorationProcessMerger:
356
+ execution.createPmExplorationProcessMerger,
357
+ inspectPmExplorationMergerIsolation:
358
+ execution.inspectPmExplorationMergerIsolation,
309
359
  createPmExplorationEvaluator: execution.createPmExplorationEvaluator,
360
+ createPmExplorationProcessEvaluator:
361
+ execution.createPmExplorationProcessEvaluator,
362
+ inspectPmExplorationEvaluatorIsolation:
363
+ execution.inspectPmExplorationEvaluatorIsolation,
310
364
  createPmExplorationExecutionHost:
311
365
  execution.createPmExplorationExecutionHost,
312
366
  isPmExplorationExecutionHost: execution.isPmExplorationExecutionHost,
313
367
  inspectPmExplorationExecutionHost:
314
368
  execution.inspectPmExplorationExecutionHost,
369
+ createEvolutionEvalProcessSupervisor:
370
+ processSupervisor.createEvolutionEvalProcessSupervisor,
371
+ createEvolutionEvalChildEvidenceLedgerAdapter:
372
+ childEvidenceStore.createEvolutionEvalChildEvidenceLedgerAdapter,
315
373
  createPmExplorationTransitionCommitter:
316
374
  transitionCommitter.createPmExplorationTransitionCommitter,
317
375
  capturePmExplorationTransitionCommitter:
@@ -325,6 +383,7 @@ async function loadBuiltInFactories(commandName) {
325
383
  verifyPmExplorationRecoverySnapshotAck:
326
384
  recoverySnapshotStore.verifyPmExplorationRecoverySnapshotAck,
327
385
  executePmExplorationRound: execution.executePmExplorationRound,
386
+ selectPmExplorationTask: execution.selectPmExplorationTask,
328
387
  mergePmExplorationBranches: execution.mergePmExplorationBranches,
329
388
  evaluatePmExplorationMemory: execution.evaluatePmExplorationMemory,
330
389
  createPmExplorationEvidenceBundle:
@@ -350,6 +409,40 @@ async function loadBuiltInFactories(commandName) {
350
409
  businessGrader.inspectPmExplorationReadOnlyOutcomeSource,
351
410
  createPmExplorationBusinessGrader:
352
411
  businessGrader.createPmExplorationBusinessGrader,
412
+ createPmExplorationMemoryRetrievalAuthority:
413
+ egressAuthority.createPmExplorationMemoryRetrievalAuthority,
414
+ createPmExplorationModelEgressAuthority:
415
+ egressAuthority.createPmExplorationModelEgressAuthority,
416
+ inspectPmExplorationEgressAuthority:
417
+ egressAuthority.inspectPmExplorationEgressAuthority,
418
+ createBrowserVisionObservationAuthority:
419
+ browserVisionObservation.createBrowserVisionObservationAuthority,
420
+ createBrowserVisionActionAuthority:
421
+ browserVisionAction.createBrowserVisionActionAuthority,
422
+ createBrowserNavigationActionAuthority:
423
+ browserNavigationAction.createBrowserNavigationActionAuthority,
424
+ createBrowserKeyboardActionAuthority:
425
+ browserKeyboardAction.createBrowserKeyboardActionAuthority,
426
+ createBrowserTabOpenActionAuthority:
427
+ browserTabOpenAction.createBrowserTabOpenActionAuthority,
428
+ createBrowserDownloadActionAuthority:
429
+ browserDownloadAction.createBrowserDownloadActionAuthority,
430
+ createBrowserQuarantinedDownloadExecutor:
431
+ browserQuarantinedDownloadExecutor.createBrowserQuarantinedDownloadExecutor,
432
+ createBrowserFilesystemQuarantineCustody:
433
+ browserFilesystemQuarantineCustody.createBrowserFilesystemQuarantineCustody,
434
+ createBrowserFilesystemQuarantineDisposalAuthority:
435
+ browserFilesystemQuarantineDisposal.createBrowserFilesystemQuarantineDisposalAuthority,
436
+ createBrowserQuarantineRetentionAuthority:
437
+ browserQuarantineRetention.createBrowserQuarantineRetentionAuthority,
438
+ createBrowserQuarantineRetentionScheduler:
439
+ browserQuarantineRetentionScheduler.createBrowserQuarantineRetentionScheduler,
440
+ createBrowserQuarantineOperatorRevocationAuthority:
441
+ browserQuarantineOperatorRevocation.createBrowserQuarantineOperatorRevocationAuthority,
442
+ createBrowserQuarantineLockMaintenanceAuthority:
443
+ browserQuarantineLockMaintenance.createBrowserQuarantineLockMaintenanceAuthority,
444
+ createBrowserDownloadArtifactDisposalAuthority:
445
+ browserDownloadArtifactDisposal.createBrowserDownloadArtifactDisposalAuthority,
353
446
  createEvolutionLedgerDurableArtifactResolver:
354
447
  ledgerPorts.createEvolutionLedgerDurableArtifactResolver,
355
448
  createEvolutionArtifactPorts: (options) =>
@@ -417,6 +510,56 @@ async function loadBuiltInFactories(commandName) {
417
510
  factories.createGovernedSkillMarketplaceCandidateInstaller =
418
511
  createGovernedSkillMarketplaceCandidateInstaller;
419
512
  }
513
+ if (commandName === "evolution" || commandName === "serve") {
514
+ const [
515
+ { SkillCandidateRegistry },
516
+ { createSkillEvaluatedPromotionProvider },
517
+ { createSkillPromotionReviewProvider },
518
+ { createSkillEvaluatedPromotionControlPlane },
519
+ { createSkillEvaluatedPromotionDurabilityAdapter },
520
+ { createSkillPromotionReviewLedgerAdapter },
521
+ { createStructuredMemoryLedgerAdapter },
522
+ { createStructuredMemoryAuthorityLedgerAdapter },
523
+ { createStructuredMemoryPromotionReceiptWriter },
524
+ { createStructuredMemoryPolicyReceiptWriter },
525
+ { createStructuredMemoryAgentControlPlane },
526
+ { createSkillRevocationPropagation },
527
+ { openSkillRetrievalRevocationAuthority },
528
+ { createSkillRetrievalRevocationLedgerAdapter },
529
+ ] = await Promise.all([
530
+ import("./skill-candidate-registry.js"),
531
+ import("./skill-evaluated-promotion.js"),
532
+ import("./skill-promotion-review.js"),
533
+ import("./skill-promotion-controller.js"),
534
+ import("./skill-evaluated-promotion-durability.js"),
535
+ import("./skill-promotion-review-ledger-adapter.js"),
536
+ import("./structured-memory-ledger-adapter.js"),
537
+ import("./structured-memory-authority-ledger-adapter.js"),
538
+ import("./structured-memory-promotion-receipt-writer.js"),
539
+ import("./structured-memory-policy-receipt-writer.js"),
540
+ import("./structured-memory-agent-control-plane.js"),
541
+ import("./skill-revocation-propagation.js"),
542
+ import("./skill-retrieval-revocation-authority.js"),
543
+ import("./skill-retrieval-revocation-ledger-adapter.js"),
544
+ ]);
545
+ Object.assign(factories, {
546
+ createSkillCandidateRegistry: (options) =>
547
+ new SkillCandidateRegistry(options),
548
+ createSkillEvaluatedPromotionProvider,
549
+ createSkillPromotionReviewProvider,
550
+ createSkillEvaluatedPromotionControlPlane,
551
+ createSkillEvaluatedPromotionDurabilityAdapter,
552
+ createSkillPromotionReviewLedgerAdapter,
553
+ createStructuredMemoryLedgerAdapter,
554
+ createStructuredMemoryAuthorityLedgerAdapter,
555
+ createStructuredMemoryPromotionReceiptWriter,
556
+ createStructuredMemoryPolicyReceiptWriter,
557
+ createStructuredMemoryAgentControlPlane,
558
+ createSkillRevocationPropagation,
559
+ openSkillRetrievalRevocationAuthority,
560
+ createSkillRetrievalRevocationLedgerAdapter,
561
+ });
562
+ }
420
563
  if (commandName === "evolution" || commandName === "serve") {
421
564
  const [
422
565
  { createEvolutionWorkbenchCliHost },
@@ -641,6 +784,21 @@ function bindFactoriesToModule(factories, moduleDigest) {
641
784
  "createWikiSkillBenchmarkReportAttestor",
642
785
  "createWikiSkillBenchmarkRunner",
643
786
  "createEvolutionEvalRuntimeComposition",
787
+ "createEvolutionEvalChildEvidenceLedgerAdapter",
788
+ "createBrowserVisionObservationAuthority",
789
+ "createBrowserVisionActionAuthority",
790
+ "createBrowserNavigationActionAuthority",
791
+ "createBrowserKeyboardActionAuthority",
792
+ "createBrowserTabOpenActionAuthority",
793
+ "createBrowserDownloadActionAuthority",
794
+ "createBrowserQuarantinedDownloadExecutor",
795
+ "createBrowserFilesystemQuarantineCustody",
796
+ "createBrowserFilesystemQuarantineDisposalAuthority",
797
+ "createBrowserQuarantineRetentionAuthority",
798
+ "createBrowserQuarantineRetentionScheduler",
799
+ "createBrowserQuarantineOperatorRevocationAuthority",
800
+ "createBrowserQuarantineLockMaintenanceAuthority",
801
+ "createBrowserDownloadArtifactDisposalAuthority",
644
802
  ];
645
803
  for (const name of providerFactories) {
646
804
  if (typeof factories[name] !== "function") continue;
@@ -652,11 +810,49 @@ function bindFactoriesToModule(factories, moduleDigest) {
652
810
  return factories[name](options);
653
811
  };
654
812
  }
813
+ for (const name of [
814
+ "createSkillEvaluatedPromotionProvider",
815
+ "createSkillPromotionReviewProvider",
816
+ ]) {
817
+ if (typeof factories[name] !== "function") continue;
818
+ result[name] = (options = {}) => {
819
+ if (options?.handlerArtifactDigest !== moduleDigest)
820
+ throw new Error(
821
+ `${name} handlerArtifactDigest must equal the authenticated deployment module digest`,
822
+ );
823
+ return factories[name](options);
824
+ };
825
+ }
826
+ for (const name of ["createSkillPromotionReviewLedgerAdapter"]) {
827
+ if (typeof factories[name] !== "function") continue;
828
+ result[name] = (options = {}) => {
829
+ if (options?.descriptor?.handlerArtifactDigest !== moduleDigest)
830
+ throw new Error(
831
+ `${name} handlerArtifactDigest must equal the authenticated deployment module digest`,
832
+ );
833
+ return factories[name](options);
834
+ };
835
+ }
836
+ for (const name of [
837
+ "createStructuredMemoryPromotionReceiptWriter",
838
+ "createStructuredMemoryPolicyReceiptWriter",
839
+ ]) {
840
+ if (typeof factories[name] !== "function") continue;
841
+ result[name] = (options = {}) => {
842
+ if (options?.descriptor?.issuerHandlerDigest !== moduleDigest)
843
+ throw new Error(
844
+ `${name} issuerHandlerDigest must equal the authenticated deployment module digest`,
845
+ );
846
+ return factories[name](options);
847
+ };
848
+ }
655
849
  for (const name of [
656
850
  "createPmExplorationReceiptAuthority",
657
851
  "createPmExplorationReceiptSigner",
658
852
  "createPmExplorationProviderSettlementAdapter",
659
853
  "createPmExplorationReadOnlyOutcomeSource",
854
+ "createPmExplorationMemoryRetrievalAuthority",
855
+ "createPmExplorationModelEgressAuthority",
660
856
  ]) {
661
857
  if (typeof factories[name] !== "function") continue;
662
858
  result[name] = (options = {}) => {
@@ -675,7 +871,12 @@ function bindFactoriesToModule(factories, moduleDigest) {
675
871
  }
676
872
  if (typeof factories.createPmExplorationExecutionManifest === "function") {
677
873
  result.createPmExplorationExecutionManifest = (input = {}) => {
678
- for (const authority of ["runner", "grader", "merger", "evaluator"]) {
874
+ const authorities = ["runner", "grader", "merger", "evaluator"];
875
+ if (Object.hasOwn(input, "curriculum")) authorities.unshift("curriculum");
876
+ if (Object.hasOwn(input, "memoryRetrieval")) {
877
+ authorities.push("memoryRetrieval", "modelEgress");
878
+ }
879
+ for (const authority of authorities) {
679
880
  if (input?.[authority]?.handlerArtifactDigest !== moduleDigest)
680
881
  throw new Error(
681
882
  `PM exploration ${authority} handlerArtifactDigest must equal the authenticated deployment module digest`,
@@ -5,6 +5,7 @@ import {
5
5
  import {
6
6
  EVOLUTION_EVAL_ATTESTATION_PURPOSES,
7
7
  EVOLUTION_EVAL_RECEIPT_SCHEMA,
8
+ EVOLUTION_EVAL_SUPERVISION_SCHEMA,
8
9
  EVOLUTION_EVAL_TARGET_INVOCATION_SCHEMA,
9
10
  EVOLUTION_EVAL_TARGET_REVOCATION_SCHEMA,
10
11
  computeEvolutionEvalReceiptDigest,
@@ -40,6 +41,10 @@ const KINDS = Object.freeze({
40
41
  purpose: EVOLUTION_EVAL_ATTESTATION_PURPOSES.targetRevocation,
41
42
  schema: EVOLUTION_EVAL_TARGET_REVOCATION_SCHEMA,
42
43
  }),
44
+ supervision: Object.freeze({
45
+ purpose: EVOLUTION_EVAL_ATTESTATION_PURPOSES.supervisor,
46
+ schema: EVOLUTION_EVAL_SUPERVISION_SCHEMA,
47
+ }),
43
48
  });
44
49
 
45
50
  function requiredString(value, label) {
@@ -1058,7 +1058,8 @@ export function buildEvolutionEvalAttestationDigest(value, purpose) {
1058
1058
  export function computeEvolutionEvalSignedEvidenceDigest(record, purpose) {
1059
1059
  if (
1060
1060
  purpose !== EVOLUTION_EVAL_ATTESTATION_PURPOSES.targetInvocation &&
1061
- purpose !== EVOLUTION_EVAL_ATTESTATION_PURPOSES.targetRevocation
1061
+ purpose !== EVOLUTION_EVAL_ATTESTATION_PURPOSES.targetRevocation &&
1062
+ purpose !== EVOLUTION_EVAL_ATTESTATION_PURPOSES.supervisor
1062
1063
  ) {
1063
1064
  throw evalError(
1064
1065
  EVOLUTION_EVAL_INVALID_CODE,