chainlesschain 0.166.21 → 0.166.24

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 (301) hide show
  1. package/README.md +67 -9
  2. package/package.json +4 -3
  3. package/src/assets/web-panel/assets/{AIOps-BjMnsUci.js → AIOps-DR-MWcZc.js} +1 -1
  4. package/src/assets/web-panel/assets/{ActionButton-DdYFP03A.js → ActionButton-DT8B7sEb.js} +1 -1
  5. package/src/assets/web-panel/assets/{Analytics-Bb8TuuK_.js → Analytics-asjh3dQJ.js} +3 -3
  6. package/src/assets/web-panel/assets/{AppLayout-Kn3TIOtk.js → AppLayout-DivQ491i.js} +5 -5
  7. package/src/assets/web-panel/assets/{Artifacts-4IxpqI_b.js → Artifacts-DPH2uUmy.js} +1 -1
  8. package/src/assets/web-panel/assets/{Audit-BOV2caqU.js → Audit-Bp2nLyc-.js} +1 -1
  9. package/src/assets/web-panel/assets/{BackgroundAgents-B86k-ay4.js → BackgroundAgents-CHS28khl.js} +1 -1
  10. package/src/assets/web-panel/assets/{Backup-C5_ie1e3.js → Backup-CKeaFSfz.js} +1 -1
  11. package/src/assets/web-panel/assets/{BaseInput-xpwg6QCW.js → BaseInput-CxwM9BAH.js} +1 -1
  12. package/src/assets/web-panel/assets/{Chat-CVZOcZau.js → Chat-DYLDwaCv.js} +4 -4
  13. package/src/assets/web-panel/assets/{ChatBubbleRenderer-D8fPYhUu.js → ChatBubbleRenderer-DdBJDBP0.js} +1 -1
  14. package/src/assets/web-panel/assets/{Checkbox-MKTq3zdP.js → Checkbox-uYTWOB8j.js} +1 -1
  15. package/src/assets/web-panel/assets/{Codegen-JUk3wzep.js → Codegen-CvYa_dwT.js} +1 -1
  16. package/src/assets/web-panel/assets/{Col-JPvTA0kC.js → Col-CanMAX4m.js} +1 -1
  17. package/src/assets/web-panel/assets/{Community-Tqgl87NQ.js → Community-B4WaDtHw.js} +1 -1
  18. package/src/assets/web-panel/assets/{Compact-BuAFYBmN.js → Compact-K93Uof_3.js} +1 -1
  19. package/src/assets/web-panel/assets/{Compliance-CXS9WIPZ.js → Compliance-CKeDLgUW.js} +1 -1
  20. package/src/assets/web-panel/assets/{Cowork-Ds2bFHrr.js → Cowork-P93grAeB.js} +3 -3
  21. package/src/assets/web-panel/assets/{Cron-C_dV_OeW.js → Cron-BSHnMtDn.js} +2 -2
  22. package/src/assets/web-panel/assets/{Crosschain-BsO6tIRo.js → Crosschain-epAOpUVJ.js} +1 -1
  23. package/src/assets/web-panel/assets/{DID-rNOFqBac.js → DID-ByjXfP7t.js} +2 -2
  24. package/src/assets/web-panel/assets/{Dashboard-C2fcKKVY.js → Dashboard-QztTU8tb.js} +2 -2
  25. package/src/assets/web-panel/assets/{Dropdown-Y7Ndr0X_.js → Dropdown-DhUc9yhN.js} +1 -1
  26. package/src/assets/web-panel/assets/{EmailListRenderer-DcP_uPmL.js → EmailListRenderer-C2sLhJJN.js} +1 -1
  27. package/src/assets/web-panel/assets/{FamilyGuardDashboard-Cwn3gDzk.js → FamilyGuardDashboard-CdfbWNDn.js} +1 -1
  28. package/src/assets/web-panel/assets/{Federation-ClQuOsqb.js → Federation-CcF_R7NW.js} +1 -1
  29. package/src/assets/web-panel/assets/{FormItemContext-DfwtmlcK.js → FormItemContext-Cm_X2IBk.js} +1 -1
  30. package/src/assets/web-panel/assets/{GenericCardRenderer-zNZhtbC5.js → GenericCardRenderer-DUi4NWlb.js} +1 -1
  31. package/src/assets/web-panel/assets/{Git-BZmdW-G5.js → Git-4Sq5FjBt.js} +2 -2
  32. package/src/assets/web-panel/assets/{Governance-CqBk4lEn.js → Governance-Dx2_v4V6.js} +1 -1
  33. package/src/assets/web-panel/assets/{Inference-Dbmt3ZXk.js → Inference-7Vr1xekR.js} +1 -1
  34. package/src/assets/web-panel/assets/{KnowledgeGraph-hMTH6qf3.js → KnowledgeGraph-Cnd2XOzf.js} +1 -1
  35. package/src/assets/web-panel/assets/{Logs-CkiYgiW2.js → Logs-B66QPVf-.js} +2 -2
  36. package/src/assets/web-panel/assets/{MarkdownRenderer-BL1FElXg.js → MarkdownRenderer-PLsEvhly.js} +1 -1
  37. package/src/assets/web-panel/assets/{Marketplace-CbB6wfin.js → Marketplace-BMIK9BmC.js} +1 -1
  38. package/src/assets/web-panel/assets/{McpTools-BSwiFtte.js → McpTools-BDbyp3J_.js} +3 -3
  39. package/src/assets/web-panel/assets/{Memory-B03PeHrz.js → Memory-CJdzfZGi.js} +2 -2
  40. package/src/assets/web-panel/assets/{MobileBridge-CRGrnd-X.js → MobileBridge-C2TH5Y3-.js} +1 -1
  41. package/src/assets/web-panel/assets/{MobileProjects-CE_5v2kO.js → MobileProjects-D1dYXkvV.js} +1 -1
  42. package/src/assets/web-panel/assets/{Mtc-Dp11QVx1.js → Mtc-B-4A1I1j.js} +4 -4
  43. package/src/assets/web-panel/assets/{MtcAudit-CYu-3JBu.js → MtcAudit-Bgcc9UOl.js} +5 -5
  44. package/src/assets/web-panel/assets/{Multisig-CGyJ0Xl3.js → Multisig-DqOe-etP.js} +3 -3
  45. package/src/assets/web-panel/assets/{NLProgramming-CoWi_ov1.js → NLProgramming-7VnhzE_6.js} +1 -1
  46. package/src/assets/web-panel/assets/Notes-BxawpeUQ.js +7 -0
  47. package/src/assets/web-panel/assets/{NotificationSettings-DX4I2b4W.js → NotificationSettings-Cr08G2aE.js} +1 -1
  48. package/src/assets/web-panel/assets/OrderTableRenderer-Ce8bEGlK.js +1 -0
  49. package/src/assets/web-panel/assets/{Organization-oopLO_tk.js → Organization-BC7lveGv.js} +4 -4
  50. package/src/assets/web-panel/assets/{Overflow-BFVvjMyf.js → Overflow-CakOW-G0.js} +1 -1
  51. package/src/assets/web-panel/assets/{P2P-CBy5t-Tk.js → P2P-Cf8CaOBZ.js} +2 -2
  52. package/src/assets/web-panel/assets/{PdhVaultBrowser--YWJNsu6.js → PdhVaultBrowser-Dc7b98W9.js} +3 -3
  53. package/src/assets/web-panel/assets/{Permissions-C2dZ8scb.js → Permissions-DGJyMEfS.js} +4 -4
  54. package/src/assets/web-panel/assets/{PersonalDataHub-Bs3l7Hlx.js → PersonalDataHub-DNIwSdwu.js} +6 -6
  55. package/src/assets/web-panel/assets/{Pipeline-DEBWbZuD.js → Pipeline-5B1S12wa.js} +1 -1
  56. package/src/assets/web-panel/assets/{Privacy-CjHBb6NU.js → Privacy-CMB6Ke5t.js} +1 -1
  57. package/src/assets/web-panel/assets/{ProjectInit-D2WipUz5.js → ProjectInit-D5PqTFiT.js} +2 -2
  58. package/src/assets/web-panel/assets/{ProjectSettings-B6WfnrGB.js → ProjectSettings-CbKNdSjV.js} +2 -2
  59. package/src/assets/web-panel/assets/Projects-ccXaHzYL.js +1 -0
  60. package/src/assets/web-panel/assets/{Providers-CCv5M_Dv.js → Providers-CJF5_-Gs.js} +1 -1
  61. package/src/assets/web-panel/assets/{QrScannerModal-CGthxU54.js → QrScannerModal-CT6iEAdi.js} +1 -1
  62. package/src/assets/web-panel/assets/{QuickAsk-CnPmXPFb.js → QuickAsk-Ci0h9mJ_.js} +1 -1
  63. package/src/assets/web-panel/assets/{Recommend-Df_tGEa9.js → Recommend-Da5mobZu.js} +1 -1
  64. package/src/assets/web-panel/assets/{RemoteSession-Z58N0Loe.js → RemoteSession-BaCY8eey.js} +2 -2
  65. package/src/assets/web-panel/assets/{Reputation-CZTBQ2Vt.js → Reputation-CaITfTsI.js} +1 -1
  66. package/src/assets/web-panel/assets/{Row-CdK3YpCQ.js → Row-DtUDamyP.js} +1 -1
  67. package/src/assets/web-panel/assets/{RssFeed-CFMVT5sb.js → RssFeed-DX27gFpg.js} +3 -3
  68. package/src/assets/web-panel/assets/{Search-DrF8RIvD.js → Search-DFL69osN.js} +1 -1
  69. package/src/assets/web-panel/assets/{Security-Ddk2f2DM.js → Security-BqGeoWv-.js} +3 -3
  70. package/src/assets/web-panel/assets/{Services-CCuK-VOo.js → Services-3z1WnEAc.js} +2 -2
  71. package/src/assets/web-panel/assets/{Skeleton-DxCpHzeM.js → Skeleton-C_OJQQ9Z.js} +1 -1
  72. package/src/assets/web-panel/assets/{Skills-t2oTDgcv.js → Skills-BY7aT6Mo.js} +1 -1
  73. package/src/assets/web-panel/assets/{Sla-Df63M9_R.js → Sla-BZv7DSaD.js} +1 -1
  74. package/src/assets/web-panel/assets/SpeechSettings-6lJKLhCn.js +1 -0
  75. package/src/assets/web-panel/assets/{SyncSettings-COd_tgPp.js → SyncSettings-B6D7STlI.js} +2 -2
  76. package/src/assets/web-panel/assets/{Tasks-CzDCcrik.js → Tasks-Co_FCZAO.js} +1 -1
  77. package/src/assets/web-panel/assets/{Templates-D-vfxTGA.js → Templates-CnY-9fgz.js} +1 -1
  78. package/src/assets/web-panel/assets/{Tenant-BlpT_Gxc.js → Tenant-B71yXfZ8.js} +1 -1
  79. package/src/assets/web-panel/assets/{Terminal-D5rq52Hg.js → Terminal-Dd_P7awo.js} +2 -2
  80. package/src/assets/web-panel/assets/{TimelineRenderer-DdoMndkK.js → TimelineRenderer-CvIEMyli.js} +1 -1
  81. package/src/assets/web-panel/assets/{Tokens-BhgBsI6g.js → Tokens-DknFBGOi.js} +1 -1
  82. package/src/assets/web-panel/assets/{Trigger-DwwzoikZ.js → Trigger-D_4nJONB.js} +1 -1
  83. package/src/assets/web-panel/assets/{Trust-HkTpzXFb.js → Trust-BNl21fa7.js} +1 -1
  84. package/src/assets/web-panel/assets/{UkeySign-D9nk6Ehe.js → UkeySign-CFrCI7uK.js} +1 -1
  85. package/src/assets/web-panel/assets/{VideoEditing-BKk0rfoy.js → VideoEditing-BVfY6JLg.js} +1 -1
  86. package/src/assets/web-panel/assets/{Wallet-IVWIU_Lq.js → Wallet-Cj9CAK0J.js} +4 -4
  87. package/src/assets/web-panel/assets/{WebAuthn-CFTCpfsG.js → WebAuthn-DcqZlzA3.js} +4 -4
  88. package/src/assets/web-panel/assets/{WorkflowEditor-Dnf4Obif.js → WorkflowEditor-Dfr_dMld.js} +1 -1
  89. package/src/assets/web-panel/assets/{chat-D2snERdj.js → chat-Yv6UF0AD.js} +1 -1
  90. package/src/assets/web-panel/assets/{colors-DKEjK1N1.js → colors-CDW_-1fs.js} +1 -1
  91. package/src/assets/web-panel/assets/{compact-item-BEDLwQdt.js → compact-item-BYOQvd-6.js} +1 -1
  92. package/src/assets/web-panel/assets/{createContext-DA9iW1a0.js → createContext-BCGO0BiP.js} +1 -1
  93. package/src/assets/web-panel/assets/devWarning-H-kXSuf-.js +1 -0
  94. package/src/assets/web-panel/assets/{hasIn-5l2xEcY9.js → hasIn-DY-70cfQ.js} +1 -1
  95. package/src/assets/web-panel/assets/{index-B7_W_rYd.js → index-366wfQBU.js} +1 -1
  96. package/src/assets/web-panel/assets/index-B0o4MeNK.js +1 -0
  97. package/src/assets/web-panel/assets/{index-CxEtQYdi.js → index-B9ZogJJM.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-B00GeekA.js → index-B9m5QAMg.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-C7sKbM5s.js → index-BBs2mv5M.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-CX1x4AFn.js → index-BFv1hzF6.js} +1 -1
  101. package/src/assets/web-panel/assets/index-BVafOL_I.js +1 -0
  102. package/src/assets/web-panel/assets/{index-DU2TXJu-.js → index-BXlEx4UH.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-e-e40id6.js → index-BayRTE5w.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-DXet1xol.js → index-Bb9nyts1.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-D7z4zB_a.js → index-Bf_Va0S-.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-fccZmC_h.js → index-Br3wQLVY.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-Bqc8tdIF.js → index-BvK4fjkk.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-BO9dQjpt.js → index-C40UdtlS.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-Csfb-7hw.js → index-C4UJA2ju.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-Td8ZwyoC.js → index-CB_Iw73G.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-BZ5lY2zx.js → index-CCwWp3mT.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-DpqtbXdE.js → index-CFa2fPCk.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-NJieh3T1.js → index-CIyHxV4u.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-Dbkghqn_.js → index-CUP-A2_h.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-DqwPFbOb.js → index-CUo27q9J.js} +3 -3
  116. package/src/assets/web-panel/assets/{index-B4QYBliR.js → index-CaT8trvf.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-BgfImyZI.js → index-CnZNbcux.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-Dbd7eEex.js → index-Cy2NE6AO.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-CbTPvp2_.js → index-CzeEEazr.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-5pW4t1iD.js → index-D--TEyDj.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-Dg2a9owQ.js → index-DCtsjhhT.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-B_eCoZgW.js → index-DLOf7BSz.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-7P1b8HZo.js → index-DM5c4pc-.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-CRPrHE7h.js → index-DRFC2Qt0.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-Bq5P3piS.js → index-DT_qVaaV.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-CjWltbi_.js → index-DUDoRk9r.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-CkMKuqUs.js → index-Dg-AQYDf.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-DLoalqRX.js → index-DuIPq5MX.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-CGlotREA.js → index-NYVBUAVN.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-yYEQXYaU.js → index-NaCESahy.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-CmruhzFi.js → index-RjIMPG0u.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-fgYk0QXO.js → index-Y9akzgFO.js} +1 -1
  133. package/src/assets/web-panel/assets/{index-DvV03Ayk.js → index-hZ0Eyrrw.js} +1 -1
  134. package/src/assets/web-panel/assets/{initDefaultProps-CPrcB1TC.js → initDefaultProps-CG99CcR4.js} +1 -1
  135. package/src/assets/web-panel/assets/{motion-BQ7mWRh_.js → motion-Z7MH0_0G.js} +1 -1
  136. package/src/assets/web-panel/assets/{move-CzOEq99p.js → move-BX67lOdq.js} +1 -1
  137. package/src/assets/web-panel/assets/{mtc-parser-BlQI5jrw.js → mtc-parser-CmAbG1fE.js} +1 -1
  138. package/src/assets/web-panel/assets/{omit-DlW4gxmv.js → omit-DiU5tI1_.js} +1 -1
  139. package/src/assets/web-panel/assets/{pickAttrs-BBYms5nP.js → pickAttrs-BGfvLrYL.js} +1 -1
  140. package/src/assets/web-panel/assets/{placementArrow-az2MPJ_7.js → placementArrow-CggLEgaJ.js} +1 -1
  141. package/src/assets/web-panel/assets/{responsiveObserve-D1-ibEol.js → responsiveObserve-t3nlghPZ.js} +1 -1
  142. package/src/assets/web-panel/assets/{slide-DHGqa4GA.js → slide-BkV4dL9s.js} +1 -1
  143. package/src/assets/web-panel/assets/{statusUtils-CYGDo6lD.js → statusUtils-qec1PUoC.js} +1 -1
  144. package/src/assets/web-panel/assets/{styleChecker-Cl2EM9K6.js → styleChecker-ChjX6T8D.js} +1 -1
  145. package/src/assets/web-panel/assets/{useFlexGapSupport-DdYhzuv1.js → useFlexGapSupport-B1jLoZcM.js} +1 -1
  146. package/src/assets/web-panel/assets/{useFs-DWumPuBW.js → useFs-C3X53s4E.js} +1 -1
  147. package/src/assets/web-panel/assets/{usePersonalDataHub-DxAO-Aqi.js → usePersonalDataHub-DOvbbnkZ.js} +1 -1
  148. package/src/assets/web-panel/assets/{vnode-CplsQf_N.js → vnode-Ie0TEVFT.js} +1 -1
  149. package/src/assets/web-panel/assets/{zoom-Cw5HXNSG.js → zoom-CRUMVS8l.js} +1 -1
  150. package/src/assets/web-panel/index.html +1 -1
  151. package/src/command-help-index.json +3 -3
  152. package/src/commands/agent.js +18 -1
  153. package/src/commands/evolution-benchmark.js +72 -0
  154. package/src/commands/evolution.js +2 -0
  155. package/src/commands/governed-skill-marketplace.js +142 -0
  156. package/src/commands/marketplace.js +4 -1
  157. package/src/commands/serve.js +41 -0
  158. package/src/commands/skill.js +3 -0
  159. package/src/data/changelog.json +39 -0
  160. package/src/gateways/ws/ws-agent-handler.js +59 -2
  161. package/src/gateways/ws/ws-server.js +2 -0
  162. package/src/harness/golden-transcript.js +1 -0
  163. package/src/harness/prompt-compressor.js +51 -5
  164. package/src/harness/provider-backed-compaction.js +28 -1
  165. package/src/harness/remote-session-registry.js +15 -3
  166. package/src/index.js +30 -4
  167. package/src/lazy-dispatch.js +15 -1
  168. package/src/lib/advisor-runtime.js +55 -2
  169. package/src/lib/app-server/cli-agent-kernel-adapter.js +4 -0
  170. package/src/lib/app-server/graph-runtime.js +32 -0
  171. package/src/lib/app-server/server.js +45 -1
  172. package/src/lib/app-server/websocket-transport.js +23 -0
  173. package/src/lib/autonomous-agent.js +63 -13
  174. package/src/lib/cowork/ab-comparator-cli.js +4 -3
  175. package/src/lib/cowork/debate-review-cli.js +4 -3
  176. package/src/lib/cowork/decision-kb-cli.js +5 -0
  177. package/src/lib/cowork-adapter.js +38 -16
  178. package/src/lib/evolution/agent-evolution-ingress.js +95 -15
  179. package/src/lib/evolution/agent-evolution-runtime-composition.js +82 -0
  180. package/src/lib/evolution/agent-evolution-session-lifecycle.js +46 -0
  181. package/src/lib/evolution/agent-model-projection.js +217 -0
  182. package/src/lib/evolution/bounded-descriptor-read.js +29 -0
  183. package/src/lib/evolution/controlled-skill-pilot-ledger-adapter.js +551 -0
  184. package/src/lib/evolution/controlled-skill-production-pilot.js +308 -18
  185. package/src/lib/evolution/evidence-backed-wiki-maintainer.js +10 -1
  186. package/src/lib/evolution/evidence-json-text.js +236 -0
  187. package/src/lib/evolution/evolution-artifact-ports.js +202 -21
  188. package/src/lib/evolution/evolution-deployment-loader.js +369 -0
  189. package/src/lib/evolution/evolution-eval-child-evidence-ledger-adapter.js +373 -0
  190. package/src/lib/evolution/evolution-eval-gate.js +14 -1
  191. package/src/lib/evolution/evolution-eval-process-supervisor-worker.mjs +14 -0
  192. package/src/lib/evolution/evolution-eval-process-supervisor.js +607 -0
  193. package/src/lib/evolution/evolution-evidence-artifact-adapter.js +14 -1
  194. package/src/lib/evolution/evolution-evidence-projector.js +240 -37
  195. package/src/lib/evolution/evolution-file-witness.js +153 -30
  196. package/src/lib/evolution/evolution-ledger-ports.js +1027 -66
  197. package/src/lib/evolution/evolution-ledger.js +66 -2
  198. package/src/lib/evolution/evolution-raw-crypto-shred.js +29 -15
  199. package/src/lib/evolution/evolution-raw-deletion-ledger-adapter.js +865 -0
  200. package/src/lib/evolution/evolution-release-train-domain-stages.js +769 -0
  201. package/src/lib/evolution/evolution-release-train-ledger-adapter.js +335 -0
  202. package/src/lib/evolution/evolution-release-train-stage-output-ledger-adapter.js +333 -0
  203. package/src/lib/evolution/evolution-release-train.js +586 -0
  204. package/src/lib/evolution/evolution-workbench-batch-executor.js +101 -144
  205. package/src/lib/evolution/evolution-workbench-control-ports.js +203 -0
  206. package/src/lib/evolution/evolution-workbench-file-resources.js +403 -0
  207. package/src/lib/evolution/evolution-workbench-projection.js +152 -25
  208. package/src/lib/evolution/evolution-workbench-registry-source.js +482 -0
  209. package/src/lib/evolution/evolution-workbench-review-ledger-adapter.js +823 -0
  210. package/src/lib/evolution/evolution-workbench-review-protocol.js +157 -0
  211. package/src/lib/evolution/evolution-workbench-rollback-authorization.js +57 -0
  212. package/src/lib/evolution/evolution-workbench-rollback-ledger-adapter.js +1016 -0
  213. package/src/lib/evolution/evolution-workbench-runtime.js +133 -0
  214. package/src/lib/evolution/evolution-workbench-version-control.js +70 -36
  215. package/src/lib/evolution/evolvable-artifact-ledger-adapter.js +736 -0
  216. package/src/lib/evolution/governed-knowledge-artifact-lifecycle.js +364 -0
  217. package/src/lib/evolution/governed-knowledge-candidate-rejection.js +343 -0
  218. package/src/lib/evolution/governed-knowledge-dependency-authority.js +227 -44
  219. package/src/lib/evolution/governed-knowledge-dependency-ledger-executor.js +95 -83
  220. package/src/lib/evolution/governed-knowledge-merge-ledger-executor.js +29 -2
  221. package/src/lib/evolution/governed-knowledge-merge-publisher-authority.js +31 -3
  222. package/src/lib/evolution/governed-knowledge-record.js +148 -0
  223. package/src/lib/evolution/governed-knowledge-revocation-record.js +135 -0
  224. package/src/lib/evolution/governed-knowledge-skill-rollback.js +475 -0
  225. package/src/lib/evolution/governed-knowledge-sync-ledger-adapter.js +92 -6
  226. package/src/lib/evolution/governed-knowledge-sync-merge-publisher.js +57 -4
  227. package/src/lib/evolution/governed-knowledge-sync.js +332 -99
  228. package/src/lib/evolution/governed-knowledge-wiki-tombstone.js +462 -0
  229. package/src/lib/evolution/governed-skill-marketplace-badge.js +208 -0
  230. package/src/lib/evolution/governed-skill-marketplace-candidate.js +330 -0
  231. package/src/lib/evolution/governed-skill-marketplace-cli-host.js +308 -0
  232. package/src/lib/evolution/governed-skill-marketplace-ledger-adapter.js +420 -0
  233. package/src/lib/evolution/governed-skill-marketplace.js +288 -5
  234. package/src/lib/evolution/governed-wiki-pruning-journal.js +302 -0
  235. package/src/lib/evolution/governed-wiki-pruning-ledger-adapter.js +459 -0
  236. package/src/lib/evolution/governed-wiki-pruning-maintenance.js +576 -0
  237. package/src/lib/evolution/governed-wiki-pruning-plan-authority.js +169 -0
  238. package/src/lib/evolution/governed-wiki-pruning-raw-shred.js +207 -0
  239. package/src/lib/evolution/governed-wiki-pruning-retrieval.js +587 -0
  240. package/src/lib/evolution/governed-wiki-pruning-runtime.js +153 -0
  241. package/src/lib/evolution/governed-wiki-pruning-skill-rollback.js +360 -0
  242. package/src/lib/evolution/governed-wiki-pruning.js +322 -143
  243. package/src/lib/evolution/independent-skill-revocation-source.js +231 -0
  244. package/src/lib/evolution/knowledge-wiki-source-admission.js +124 -0
  245. package/src/lib/evolution/knowledge-wiki-source-provenance.js +359 -0
  246. package/src/lib/evolution/progressive-canary-external-watchdog.js +578 -0
  247. package/src/lib/evolution/progressive-canary-traffic-worker.js +628 -0
  248. package/src/lib/evolution/progressive-canary-watchdog-file-store.js +285 -0
  249. package/src/lib/evolution/progressive-canary-watchdog-node-pki.js +265 -0
  250. package/src/lib/evolution/skill-candidate-registry.js +22 -0
  251. package/src/lib/evolution/skill-promotion-controller.js +25 -0
  252. package/src/lib/evolution/skill-promotion-review-ledger-adapter.js +100 -0
  253. package/src/lib/evolution/skill-registry-transition-ledger-adapter.js +131 -2
  254. package/src/lib/evolution/skill-release-registry.js +25 -4
  255. package/src/lib/evolution/skill-retrieval-revocation-authority.js +361 -0
  256. package/src/lib/evolution/skill-retrieval-revocation-ledger-adapter.js +346 -0
  257. package/src/lib/evolution/skill-revocation-propagation.js +467 -0
  258. package/src/lib/evolution/skill-target-matrix-eval.js +162 -11
  259. package/src/lib/evolution/skill-wiki-reconciliation.js +985 -0
  260. package/src/lib/evolution/skill-writer-inventory-manifest.js +15 -12
  261. package/src/lib/evolution/statistical-progressive-canary.js +845 -0
  262. package/src/lib/evolution/structured-memory-agent-control-plane.js +120 -0
  263. package/src/lib/evolution/structured-memory-authority-ledger-adapter.js +5 -1
  264. package/src/lib/evolution/structured-memory-promotion-receipt-writer.js +126 -0
  265. package/src/lib/evolution/wiki-informed-skill-proposer.js +127 -21
  266. package/src/lib/evolution/wiki-maintainer-ledger-adapter.js +760 -100
  267. package/src/lib/evolution/wiki-revision-protocol.js +120 -0
  268. package/src/lib/evolution/wiki-skill-proposal-ledger-adapter.js +307 -0
  269. package/src/lib/evolution/wiki-target-tombstone-revision.js +101 -0
  270. package/src/lib/evolution/wikiskill-benchmark-cli-host.js +178 -0
  271. package/src/lib/evolution/wikiskill-benchmark-execution-host.js +702 -0
  272. package/src/lib/evolution/wikiskill-benchmark-ledger-adapter.js +613 -0
  273. package/src/lib/evolution/wikiskill-benchmark.js +574 -0
  274. package/src/lib/goal-assess.js +17 -10
  275. package/src/lib/interactive-planner.js +9 -1
  276. package/src/lib/iteration-budget.js +16 -2
  277. package/src/lib/micro-compact.js +4 -1
  278. package/src/lib/model-failure-policy.js +21 -0
  279. package/src/lib/process-execution-broker/index.js +1 -0
  280. package/src/lib/process-execution-broker/windows-sandbox-helper.dll +0 -0
  281. package/src/lib/process-execution-broker/windows-sandbox-helper.exe +0 -0
  282. package/src/lib/process-execution-broker/windows-sandbox.cs +33 -15
  283. package/src/lib/read-file-page.js +191 -0
  284. package/src/lib/runnable-provider.js +2 -1
  285. package/src/lib/session-host-lease.js +11 -16
  286. package/src/lib/skill-retrieval-router.js +22 -1
  287. package/src/repl/agent-repl.js +127 -33
  288. package/src/runtime/agent-core.js +224 -80
  289. package/src/runtime/agent-runtime.js +43 -0
  290. package/src/runtime/coding-agent-contract-shared.cjs +7 -1
  291. package/src/runtime/fallback-model.js +143 -62
  292. package/src/runtime/headless-runner.js +54 -10
  293. package/src/runtime/headless-stream.js +53 -6
  294. package/src/runtime/runtime-factory.js +41 -2
  295. package/src/assets/web-panel/assets/Notes-CgU9DDo9.js +0 -7
  296. package/src/assets/web-panel/assets/OrderTableRenderer-CwHc15Zs.js +0 -1
  297. package/src/assets/web-panel/assets/Projects-FF_thRi6.js +0 -1
  298. package/src/assets/web-panel/assets/SpeechSettings-l7ox6KuX.js +0 -1
  299. package/src/assets/web-panel/assets/devWarning-DyhgpXPf.js +0 -1
  300. package/src/assets/web-panel/assets/index-Ck1jhFE0.js +0 -1
  301. package/src/assets/web-panel/assets/index-c8jJEHVs.js +0 -1
@@ -0,0 +1,373 @@
1
+ import {
2
+ EVOLUTION_DURABLE_ARTIFACT_RECORD_SCHEMA,
3
+ isEvolutionLedgerArtifactResolver,
4
+ } from "./evolution-artifact-ports.js";
5
+ import {
6
+ EVOLUTION_EVAL_ATTESTATION_PURPOSES,
7
+ EVOLUTION_EVAL_RECEIPT_SCHEMA,
8
+ EVOLUTION_EVAL_TARGET_INVOCATION_SCHEMA,
9
+ EVOLUTION_EVAL_TARGET_REVOCATION_SCHEMA,
10
+ computeEvolutionEvalReceiptDigest,
11
+ computeEvolutionEvalSignedEvidenceDigest,
12
+ } from "./evolution-eval-gate.js";
13
+ import {
14
+ EVOLUTION_ARTIFACT_RESOLUTION_SCHEMA,
15
+ EVOLUTION_LEDGER_DOMAIN_EVENT_SCHEMA,
16
+ } from "./evolution-ledger.js";
17
+
18
+ export const EVOLUTION_EVAL_CHILD_EVIDENCE_RECORD_SCHEMA =
19
+ "chainlesschain.evolution-eval-child-evidence-record/v1";
20
+ export const EVOLUTION_EVAL_CHILD_EVIDENCE_RESOLUTION_SCHEMA =
21
+ "chainlesschain.evolution-eval-child-evidence-resolution/v1";
22
+ export const EVOLUTION_EVAL_CHILD_EVIDENCE_EVENT_TYPE =
23
+ "evolution.eval-child-evidence.retained";
24
+ export const EVOLUTION_EVAL_CHILD_EVIDENCE_CORRUPT_CODE =
25
+ "CC_EVOLUTION_EVAL_CHILD_EVIDENCE_CORRUPT";
26
+
27
+ const ARTIFACT_TYPE = "evolution-eval-child-evidence";
28
+ const DIGEST = /^sha256:[a-f0-9]{64}$/u;
29
+ const CHILD_EVIDENCE_STORES = new WeakSet();
30
+ const KINDS = Object.freeze({
31
+ "gate-receipt": Object.freeze({
32
+ purpose: null,
33
+ schema: EVOLUTION_EVAL_RECEIPT_SCHEMA,
34
+ }),
35
+ invocation: Object.freeze({
36
+ purpose: EVOLUTION_EVAL_ATTESTATION_PURPOSES.targetInvocation,
37
+ schema: EVOLUTION_EVAL_TARGET_INVOCATION_SCHEMA,
38
+ }),
39
+ revocation: Object.freeze({
40
+ purpose: EVOLUTION_EVAL_ATTESTATION_PURPOSES.targetRevocation,
41
+ schema: EVOLUTION_EVAL_TARGET_REVOCATION_SCHEMA,
42
+ }),
43
+ });
44
+
45
+ function requiredString(value, label) {
46
+ if (typeof value !== "string" || value.trim() === "")
47
+ throw new TypeError(`${label} is required`);
48
+ return value;
49
+ }
50
+
51
+ function capture(owner, method, label = method) {
52
+ if (typeof owner?.[method] !== "function")
53
+ throw new TypeError(`${label} port is required`);
54
+ return (...args) => Reflect.apply(owner[method], owner, args);
55
+ }
56
+
57
+ function canonical(value) {
58
+ if (value === null || typeof value !== "object") return JSON.stringify(value);
59
+ if (Array.isArray(value)) return `[${value.map(canonical).join(",")}]`;
60
+ return `{${Object.keys(value)
61
+ .sort()
62
+ .map((key) => `${JSON.stringify(key)}:${canonical(value[key])}`)
63
+ .join(",")}}`;
64
+ }
65
+
66
+ function corrupt(message) {
67
+ const error = new Error(message);
68
+ error.code = EVOLUTION_EVAL_CHILD_EVIDENCE_CORRUPT_CODE;
69
+ throw error;
70
+ }
71
+
72
+ function descriptor(input) {
73
+ if (!Number.isSafeInteger(input?.revision) || input.revision < 1)
74
+ throw new TypeError("revision must be a positive integer");
75
+ if (!DIGEST.test(input?.handlerArtifactDigest || ""))
76
+ throw new TypeError("handlerArtifactDigest must be sha256-bound");
77
+ return Object.freeze({
78
+ tenantId: requiredString(input.tenantId, "tenantId"),
79
+ artifactTenantId: requiredString(
80
+ input.artifactTenantId,
81
+ "artifactTenantId",
82
+ ),
83
+ streamId: requiredString(input.streamId, "streamId"),
84
+ audience: requiredString(input.audience, "audience"),
85
+ purpose: requiredString(input.purpose, "purpose"),
86
+ authorityId: requiredString(input.authorityId, "authorityId"),
87
+ revision: input.revision,
88
+ handlerArtifactDigest: input.handlerArtifactDigest,
89
+ });
90
+ }
91
+
92
+ function storeDescriptor(input) {
93
+ if (!Number.isSafeInteger(input?.revision) || input.revision < 1)
94
+ throw new TypeError("child evidence store revision must be positive");
95
+ if (!DIGEST.test(input?.handlerArtifactDigest || ""))
96
+ throw new TypeError("child evidence store handler digest is invalid");
97
+ return Object.freeze({
98
+ tenantId: requiredString(input.tenantId, "child evidence store tenantId"),
99
+ streamId: requiredString(input.streamId, "child evidence store streamId"),
100
+ authorityId: requiredString(
101
+ input.authorityId,
102
+ "child evidence store authorityId",
103
+ ),
104
+ revision: input.revision,
105
+ handlerArtifactDigest: input.handlerArtifactDigest,
106
+ });
107
+ }
108
+
109
+ function captureEvidence(kind, evidence, expectedDigest) {
110
+ const policy = KINDS[kind];
111
+ if (!policy) throw new TypeError("child evidence kind is invalid");
112
+ if (!evidence || typeof evidence !== "object" || Array.isArray(evidence))
113
+ throw new TypeError("child evidence must be a record");
114
+ const captured = Object.freeze(structuredClone(evidence));
115
+ if (captured.schema !== policy.schema)
116
+ throw new TypeError("child evidence schema does not match its kind");
117
+ const receiptDigest =
118
+ kind === "gate-receipt"
119
+ ? computeEvolutionEvalReceiptDigest(captured)
120
+ : computeEvolutionEvalSignedEvidenceDigest(captured, policy.purpose);
121
+ if (kind === "gate-receipt" && captured.receiptDigest !== receiptDigest)
122
+ throw new TypeError("Gate child receipt digest is invalid");
123
+ if (expectedDigest !== undefined && receiptDigest !== expectedDigest)
124
+ throw new TypeError("child evidence digest does not match its bytes");
125
+ return Object.freeze({ captured, receiptDigest });
126
+ }
127
+
128
+ export class EvolutionEvalChildEvidenceLedgerAdapter {
129
+ constructor({
130
+ descriptor: input,
131
+ artifactPorts,
132
+ ledger,
133
+ ledgerArtifactResolver,
134
+ now = Date.now,
135
+ } = {}) {
136
+ this.descriptor = descriptor(input);
137
+ this._put = capture(artifactPorts, "putCanonical");
138
+ this._read = capture(ledger, "read");
139
+ this._verifyLedger = capture(ledger, "verify");
140
+ this._append = capture(ledger, "appendDomainEvent");
141
+ if (!isEvolutionLedgerArtifactResolver(ledgerArtifactResolver))
142
+ throw new TypeError(
143
+ "a branded EvolutionArtifactPorts ledger resolver is required",
144
+ );
145
+ if (typeof now !== "function")
146
+ throw new TypeError("now must be a function");
147
+ this._resolveArtifact = ledgerArtifactResolver;
148
+ this._now = now;
149
+ CHILD_EVIDENCE_STORES.add(this);
150
+ Object.freeze(this);
151
+ }
152
+
153
+ _events() {
154
+ const events = this._read();
155
+ if (!Array.isArray(events))
156
+ corrupt("EvolutionLedger did not return events");
157
+ return events.filter(
158
+ (event) =>
159
+ event.schema === EVOLUTION_LEDGER_DOMAIN_EVENT_SCHEMA &&
160
+ event.type === EVOLUTION_EVAL_CHILD_EVIDENCE_EVENT_TYPE &&
161
+ event.tenantId === this.descriptor.tenantId &&
162
+ event.correlationId === this.descriptor.streamId,
163
+ );
164
+ }
165
+
166
+ _resolveEvent(event) {
167
+ if (
168
+ event.artifactTenantId !== this.descriptor.artifactTenantId ||
169
+ event.decision !== "accepted" ||
170
+ event.skillName !== "evolution-eval" ||
171
+ !Array.isArray(event.sourceRefs) ||
172
+ event.sourceRefs.length !== 0
173
+ ) {
174
+ corrupt("child evidence ledger event binding is invalid");
175
+ }
176
+ const identity = this._verifyLedger();
177
+ const resolution = this._resolveArtifact({
178
+ epoch: identity.epoch,
179
+ ledgerId: identity.ledgerId,
180
+ ref: event.subjectRef,
181
+ tenantId: this.descriptor.artifactTenantId,
182
+ });
183
+ if (
184
+ resolution?.schema !== EVOLUTION_ARTIFACT_RESOLUTION_SCHEMA ||
185
+ resolution.authenticated !== true ||
186
+ resolution.found !== true ||
187
+ resolution.ref !== event.subjectRef.ref ||
188
+ resolution.digest !== event.subjectRef.digest ||
189
+ !Buffer.isBuffer(resolution.bytes)
190
+ ) {
191
+ corrupt("child evidence artifact resolution is invalid");
192
+ }
193
+ let durableRecord;
194
+ try {
195
+ durableRecord = JSON.parse(resolution.bytes.toString("utf8"));
196
+ } catch {
197
+ corrupt("child evidence artifact is not JSON");
198
+ }
199
+ if (
200
+ durableRecord?.schema !== EVOLUTION_DURABLE_ARTIFACT_RECORD_SCHEMA ||
201
+ durableRecord.tenantId !== this.descriptor.artifactTenantId ||
202
+ durableRecord.audience !== this.descriptor.audience ||
203
+ durableRecord.purpose !== this.descriptor.purpose ||
204
+ durableRecord.retention !== "ledger" ||
205
+ durableRecord.type !== ARTIFACT_TYPE
206
+ ) {
207
+ corrupt("child evidence durable record binding is invalid");
208
+ }
209
+ const value = durableRecord.value;
210
+ if (
211
+ value?.schema !== EVOLUTION_EVAL_CHILD_EVIDENCE_RECORD_SCHEMA ||
212
+ value.tenantId !== this.descriptor.tenantId ||
213
+ value.streamId !== this.descriptor.streamId
214
+ ) {
215
+ corrupt("child evidence record scope is invalid");
216
+ }
217
+ const verified = captureEvidence(
218
+ value.kind,
219
+ value.evidence,
220
+ value.receiptDigest,
221
+ );
222
+ if (
223
+ event.eventId !==
224
+ `${EVOLUTION_EVAL_CHILD_EVIDENCE_EVENT_TYPE}.${verified.receiptDigest.slice(7)}`
225
+ ) {
226
+ corrupt("child evidence event identity is invalid");
227
+ }
228
+ return Object.freeze({
229
+ kind: value.kind,
230
+ evidence: verified.captured,
231
+ receiptDigest: verified.receiptDigest,
232
+ event,
233
+ });
234
+ }
235
+
236
+ async retain({ kind, evidence, receiptDigest } = {}) {
237
+ const verified = captureEvidence(kind, evidence, receiptDigest);
238
+ const eventId = `${EVOLUTION_EVAL_CHILD_EVIDENCE_EVENT_TYPE}.${verified.receiptDigest.slice(7)}`;
239
+ const existing = this._events().filter(
240
+ (event) => event.eventId === eventId,
241
+ );
242
+ if (existing.length > 1) corrupt("child evidence event is ambiguous");
243
+ if (existing.length === 1) {
244
+ const recovered = this._resolveEvent(existing[0]);
245
+ if (
246
+ recovered.kind !== kind ||
247
+ canonical(recovered.evidence) !== canonical(verified.captured)
248
+ ) {
249
+ corrupt("child evidence event resolved substituted bytes");
250
+ }
251
+ return Object.freeze({
252
+ authenticated: true,
253
+ durable: true,
254
+ recovered: true,
255
+ kind,
256
+ receiptDigest: verified.receiptDigest,
257
+ });
258
+ }
259
+ const head = this._verifyLedger();
260
+ const nowMs = Number(this._now());
261
+ if (!Number.isFinite(nowMs))
262
+ throw new TypeError("child evidence clock is invalid");
263
+ const record = Object.freeze({
264
+ schema: EVOLUTION_EVAL_CHILD_EVIDENCE_RECORD_SCHEMA,
265
+ tenantId: this.descriptor.tenantId,
266
+ streamId: this.descriptor.streamId,
267
+ kind,
268
+ receiptDigest: verified.receiptDigest,
269
+ evidence: verified.captured,
270
+ });
271
+ const published = this._put(ARTIFACT_TYPE, record, {
272
+ audience: this.descriptor.audience,
273
+ purpose: this.descriptor.purpose,
274
+ retention: "ledger",
275
+ });
276
+ if (
277
+ published?.receipt?.persisted !== true ||
278
+ published.receipt.readbackVerified !== true ||
279
+ published.receipt.integrityVerified !== true ||
280
+ published.receipt.retention !== "ledger"
281
+ ) {
282
+ corrupt("child evidence persistence was not durably confirmed");
283
+ }
284
+ const receipt = this._append(
285
+ {
286
+ artifactTenantId: this.descriptor.artifactTenantId,
287
+ correlationId: this.descriptor.streamId,
288
+ decision: "accepted",
289
+ eventId,
290
+ reason: `durable ${kind} child evidence`,
291
+ skillName: "evolution-eval",
292
+ sourceRefs: [],
293
+ subjectRef: published.ref,
294
+ tenantId: this.descriptor.tenantId,
295
+ timestamp: new Date(nowMs).toISOString(),
296
+ type: EVOLUTION_EVAL_CHILD_EVIDENCE_EVENT_TYPE,
297
+ },
298
+ { expectedHeadDigest: head.headDigest, expectedSequence: head.sequence },
299
+ );
300
+ if (receipt?.authenticated !== true || receipt.durable !== true)
301
+ corrupt("child evidence ledger append was not durable");
302
+ return Object.freeze({
303
+ authenticated: true,
304
+ durable: true,
305
+ recovered: false,
306
+ kind,
307
+ receiptDigest: verified.receiptDigest,
308
+ ledgerReceiptDigest: receipt.receiptDigest,
309
+ });
310
+ }
311
+
312
+ async resolve({ tenantId, kind, receiptDigest } = {}) {
313
+ if (
314
+ tenantId !== this.descriptor.tenantId ||
315
+ !KINDS[kind] ||
316
+ !DIGEST.test(receiptDigest || "")
317
+ ) {
318
+ throw new TypeError("child evidence resolution request is invalid");
319
+ }
320
+ const matches = this._events()
321
+ .filter(
322
+ (event) =>
323
+ event.eventId ===
324
+ `${EVOLUTION_EVAL_CHILD_EVIDENCE_EVENT_TYPE}.${receiptDigest.slice(7)}`,
325
+ )
326
+ .map((event) => this._resolveEvent(event))
327
+ .filter(
328
+ (entry) => entry.kind === kind && entry.receiptDigest === receiptDigest,
329
+ );
330
+ if (matches.length !== 1) corrupt("child evidence is missing or ambiguous");
331
+ const resolvedAtMs = Number(this._now());
332
+ if (!Number.isFinite(resolvedAtMs))
333
+ throw new TypeError("child evidence clock is invalid");
334
+ return Object.freeze({
335
+ schema: EVOLUTION_EVAL_CHILD_EVIDENCE_RESOLUTION_SCHEMA,
336
+ authenticated: true,
337
+ durable: true,
338
+ authorityId: this.descriptor.authorityId,
339
+ revision: this.descriptor.revision,
340
+ handlerArtifactDigest: this.descriptor.handlerArtifactDigest,
341
+ tenantId,
342
+ streamId: this.descriptor.streamId,
343
+ kind,
344
+ receiptDigest,
345
+ evidence: matches[0].evidence,
346
+ resolvedAt: new Date(resolvedAtMs).toISOString(),
347
+ });
348
+ }
349
+ }
350
+
351
+ export function createEvolutionEvalChildEvidenceLedgerAdapter(options) {
352
+ return new EvolutionEvalChildEvidenceLedgerAdapter(options);
353
+ }
354
+
355
+ export function createEvolutionEvalChildEvidenceStorePort({
356
+ descriptor: input,
357
+ retain,
358
+ resolve,
359
+ } = {}) {
360
+ if (typeof retain !== "function" || typeof resolve !== "function")
361
+ throw new TypeError("child evidence store ports are required");
362
+ const port = Object.freeze({
363
+ descriptor: storeDescriptor(input),
364
+ retain: (...args) => Reflect.apply(retain, undefined, args),
365
+ resolve: (...args) => Reflect.apply(resolve, undefined, args),
366
+ });
367
+ CHILD_EVIDENCE_STORES.add(port);
368
+ return port;
369
+ }
370
+
371
+ export function isEvolutionEvalChildEvidenceStore(value) {
372
+ return CHILD_EVIDENCE_STORES.has(value);
373
+ }
@@ -1055,6 +1055,19 @@ export function buildEvolutionEvalAttestationDigest(value, purpose) {
1055
1055
  return digest(value, `chainlesschain.evolution-eval-attestation/${purpose}`);
1056
1056
  }
1057
1057
 
1058
+ export function computeEvolutionEvalSignedEvidenceDigest(record, purpose) {
1059
+ if (
1060
+ purpose !== EVOLUTION_EVAL_ATTESTATION_PURPOSES.targetInvocation &&
1061
+ purpose !== EVOLUTION_EVAL_ATTESTATION_PURPOSES.targetRevocation
1062
+ ) {
1063
+ throw evalError(
1064
+ EVOLUTION_EVAL_INVALID_CODE,
1065
+ "signed evidence purpose is invalid",
1066
+ );
1067
+ }
1068
+ return digest(cloneCanonical(record), `${purpose}/signed-record`);
1069
+ }
1070
+
1058
1071
  export function computeEvolutionEvalEnvironmentDigest(environment) {
1059
1072
  return digest(
1060
1073
  cloneCanonical(environment),
@@ -2345,7 +2358,7 @@ function verifySynchronousEvidence({
2345
2358
  }
2346
2359
  return deepFreeze({
2347
2360
  core,
2348
- recordDigest: digest(cloneCanonical(record), `${purpose}/signed-record`),
2361
+ recordDigest: computeEvolutionEvalSignedEvidenceDigest(record, purpose),
2349
2362
  });
2350
2363
  }
2351
2364
 
@@ -0,0 +1,14 @@
1
+ let input = "";
2
+ for await (const chunk of process.stdin) {
3
+ input += chunk.toString("utf8");
4
+ if (Buffer.byteLength(input) > 1024 * 1024)
5
+ throw new Error("evaluation process input exceeds 1 MiB");
6
+ }
7
+ const request = JSON.parse(input);
8
+ const moduleUrl = new URL(request.moduleUrl);
9
+ const implementation = await import(moduleUrl.href);
10
+ const handler = implementation[request.exportName];
11
+ if (typeof handler !== "function")
12
+ throw new Error("evaluation process export is unavailable");
13
+ const value = await handler(request.payload);
14
+ process.stdout.write(`${JSON.stringify({ ok: true, value })}\n`);