chainlesschain 0.166.20 → 0.166.22

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 (222) hide show
  1. package/README.md +67 -9
  2. package/package.json +2 -2
  3. package/src/assets/web-panel/assets/{AIOps-CcJst5Zs.js → AIOps-oJ7USzMC.js} +1 -1
  4. package/src/assets/web-panel/assets/{ActionButton-BpHPFKd3.js → ActionButton-BlgnZe_C.js} +1 -1
  5. package/src/assets/web-panel/assets/{Analytics-DHAsASuS.js → Analytics-D2rRbTLu.js} +3 -3
  6. package/src/assets/web-panel/assets/{AppLayout-BTKwo5RC.js → AppLayout-FwS3f0B2.js} +5 -5
  7. package/src/assets/web-panel/assets/{Artifacts-BcCBTggA.js → Artifacts-iF-_08Hi.js} +1 -1
  8. package/src/assets/web-panel/assets/{Audit-z1JvJYbT.js → Audit-D24p0zQw.js} +1 -1
  9. package/src/assets/web-panel/assets/{BackgroundAgents-CJ7DCMDR.js → BackgroundAgents-Cg3mRVi9.js} +1 -1
  10. package/src/assets/web-panel/assets/{Backup-CKpxw4uw.js → Backup-EOqht3H-.js} +1 -1
  11. package/src/assets/web-panel/assets/{BaseInput-2jI_IlUB.js → BaseInput-9XWYq2hj.js} +1 -1
  12. package/src/assets/web-panel/assets/{Chat-C_4RfBeN.js → Chat-Dq5yardA.js} +5 -5
  13. package/src/assets/web-panel/assets/ChatBubbleRenderer-Ds3pA-ET.js +1 -0
  14. package/src/assets/web-panel/assets/{Checkbox-BnF4z4N1.js → Checkbox-CuyCBoBf.js} +1 -1
  15. package/src/assets/web-panel/assets/{Codegen-m_LMamhM.js → Codegen-DjWtYHNe.js} +1 -1
  16. package/src/assets/web-panel/assets/{Col-DzMbA760.js → Col-CrVr_iuG.js} +1 -1
  17. package/src/assets/web-panel/assets/{Community-SScuZUcW.js → Community-C6QxpfGc.js} +1 -1
  18. package/src/assets/web-panel/assets/{Compact-CiOHRvwQ.js → Compact-B-v5r6Pa.js} +1 -1
  19. package/src/assets/web-panel/assets/{Compliance-97FzYz-6.js → Compliance-zNiLiFgD.js} +1 -1
  20. package/src/assets/web-panel/assets/{Cowork-C0ss-SRl.js → Cowork-D9K7lMOu.js} +2 -2
  21. package/src/assets/web-panel/assets/{Cron-CCbdc9fp.js → Cron-DAjO36z4.js} +2 -2
  22. package/src/assets/web-panel/assets/{Crosschain-BPnabXej.js → Crosschain-Bxqn0aqB.js} +1 -1
  23. package/src/assets/web-panel/assets/{DID-B65hFnHs.js → DID-DfRmLUe-.js} +2 -2
  24. package/src/assets/web-panel/assets/{Dashboard-B6qR_TF2.js → Dashboard-Cz8KF3fr.js} +2 -2
  25. package/src/assets/web-panel/assets/{Dropdown-6c-2Fxm-.js → Dropdown-C4oVfkP0.js} +1 -1
  26. package/src/assets/web-panel/assets/{EmailListRenderer-GD57mfiz.js → EmailListRenderer-ivyZKN8k.js} +1 -1
  27. package/src/assets/web-panel/assets/{FamilyGuardDashboard-B2mxG6LN.js → FamilyGuardDashboard-DoxY1CPW.js} +1 -1
  28. package/src/assets/web-panel/assets/{Federation-cZS-uvAo.js → Federation-C93gZxnb.js} +1 -1
  29. package/src/assets/web-panel/assets/{FormItemContext-UbSfBIe1.js → FormItemContext-D_lEjYJE.js} +1 -1
  30. package/src/assets/web-panel/assets/{GenericCardRenderer-BMAtvGt1.js → GenericCardRenderer-BNFN9YjN.js} +1 -1
  31. package/src/assets/web-panel/assets/{Git-DAlhOiDA.js → Git-mUu2HcLI.js} +2 -2
  32. package/src/assets/web-panel/assets/{Governance-B-RRVaP8.js → Governance-CNuosrge.js} +1 -1
  33. package/src/assets/web-panel/assets/{Inference-DBl-pXYR.js → Inference-DwY5pbCB.js} +1 -1
  34. package/src/assets/web-panel/assets/{KnowledgeGraph-DjqOkvgY.js → KnowledgeGraph-aRUxhACD.js} +1 -1
  35. package/src/assets/web-panel/assets/{Logs-CEV7AEAD.js → Logs-DFfsWYy_.js} +2 -2
  36. package/src/assets/web-panel/assets/{MarkdownRenderer-BDCxa4d1.js → MarkdownRenderer-DqTx7_u1.js} +1 -1
  37. package/src/assets/web-panel/assets/{Marketplace-oRjzfmYJ.js → Marketplace-COI-ciM-.js} +1 -1
  38. package/src/assets/web-panel/assets/{McpTools-BiTnznLw.js → McpTools-BJJwaIpe.js} +3 -3
  39. package/src/assets/web-panel/assets/{Memory-DR0C5K4N.js → Memory-CDO6SGDZ.js} +2 -2
  40. package/src/assets/web-panel/assets/{MobileBridge--oR8wEcp.js → MobileBridge-BlZ5tFf4.js} +1 -1
  41. package/src/assets/web-panel/assets/{MobileProjects-DKqpYMuG.js → MobileProjects-DuoxbgWz.js} +1 -1
  42. package/src/assets/web-panel/assets/{Mtc-Dg0D6fDQ.js → Mtc-6ec9j70b.js} +2 -2
  43. package/src/assets/web-panel/assets/{MtcAudit-D4_-yWTK.js → MtcAudit-BuL7HkC7.js} +5 -5
  44. package/src/assets/web-panel/assets/{Multisig-Coz55FxA.js → Multisig-CJxR85lk.js} +3 -3
  45. package/src/assets/web-panel/assets/{NLProgramming-BWVjgW9Y.js → NLProgramming-B71O1S4l.js} +1 -1
  46. package/src/assets/web-panel/assets/{Notes-BflVuGwr.js → Notes-Bsw5zbpV.js} +3 -3
  47. package/src/assets/web-panel/assets/{NotificationSettings-CT0F_dJ7.js → NotificationSettings-BnAhXuK_.js} +1 -1
  48. package/src/assets/web-panel/assets/{OrderTableRenderer-Dyrnqy_o.js → OrderTableRenderer-BJ0R5GGz.js} +1 -1
  49. package/src/assets/web-panel/assets/{Organization-CMDTM2z5.js → Organization-B7wwNxoP.js} +2 -2
  50. package/src/assets/web-panel/assets/{Overflow-acKvvYpC.js → Overflow-CfAGr0gM.js} +1 -1
  51. package/src/assets/web-panel/assets/{P2P-CRq5j9Ax.js → P2P-KhMg22Fz.js} +2 -2
  52. package/src/assets/web-panel/assets/{PdhVaultBrowser-DmtzN6Kn.js → PdhVaultBrowser-NdAXI9ft.js} +4 -4
  53. package/src/assets/web-panel/assets/{Permissions-SZ-kjJDa.js → Permissions-CIYjqyT7.js} +4 -4
  54. package/src/assets/web-panel/assets/{PersonalDataHub-DXh-ZfgJ.js → PersonalDataHub-D2ht3P_R.js} +6 -6
  55. package/src/assets/web-panel/assets/{Pipeline-DhBU9ftP.js → Pipeline-i6flZW1m.js} +1 -1
  56. package/src/assets/web-panel/assets/{Privacy-BgEXpO_V.js → Privacy-DE0lhYVc.js} +1 -1
  57. package/src/assets/web-panel/assets/{ProjectInit-B2DJ-dmK.js → ProjectInit-BL3YbyxS.js} +2 -2
  58. package/src/assets/web-panel/assets/{ProjectSettings-ve3SocWc.js → ProjectSettings-CEtdg7ni.js} +2 -2
  59. package/src/assets/web-panel/assets/{Projects-5ZvFasSJ.js → Projects-CvtU5peJ.js} +1 -1
  60. package/src/assets/web-panel/assets/{Providers-C8fcF3BK.js → Providers-DKt_Cg-j.js} +1 -1
  61. package/src/assets/web-panel/assets/{QrScannerModal-unjO8lNO.js → QrScannerModal-DA61jNSx.js} +1 -1
  62. package/src/assets/web-panel/assets/{QuickAsk-BT1QtT7D.js → QuickAsk-fS9ryUmq.js} +1 -1
  63. package/src/assets/web-panel/assets/{Recommend-BSjFrY1w.js → Recommend-CR9dZU5Y.js} +1 -1
  64. package/src/assets/web-panel/assets/{RemoteSession-CWV0bICg.js → RemoteSession-BV0BR2Dz.js} +2 -2
  65. package/src/assets/web-panel/assets/{Reputation-BMjiMsk2.js → Reputation-BIeGUvYD.js} +1 -1
  66. package/src/assets/web-panel/assets/{Row-9XCY22PM.js → Row-DHDT1aro.js} +1 -1
  67. package/src/assets/web-panel/assets/{RssFeed-DQ9PDy7Q.js → RssFeed-Cq6YKb1h.js} +3 -3
  68. package/src/assets/web-panel/assets/{Search-Boym2HwG.js → Search-DEF6vsy6.js} +1 -1
  69. package/src/assets/web-panel/assets/{Security-Gbq3lGQb.js → Security-CHtYiKY9.js} +4 -4
  70. package/src/assets/web-panel/assets/{Services-OcUfLdnu.js → Services-u16lvBJN.js} +2 -2
  71. package/src/assets/web-panel/assets/{Skeleton-BjTog6cA.js → Skeleton-CGbizyDj.js} +1 -1
  72. package/src/assets/web-panel/assets/{Skills-Dny4ft_1.js → Skills-BZMQcAa7.js} +1 -1
  73. package/src/assets/web-panel/assets/{Sla-Cy_VnhpZ.js → Sla-Bm-CycVi.js} +1 -1
  74. package/src/assets/web-panel/assets/{SpeechSettings-CrFuL_lp.js → SpeechSettings-BudpA5kr.js} +1 -1
  75. package/src/assets/web-panel/assets/{SyncSettings-k-FnjuOR.js → SyncSettings-B8q1C1eC.js} +2 -2
  76. package/src/assets/web-panel/assets/{Tasks-ZEqDSo0_.js → Tasks-SU1pBWc-.js} +1 -1
  77. package/src/assets/web-panel/assets/{Templates-CYYksYV5.js → Templates-CyOfJzmt.js} +1 -1
  78. package/src/assets/web-panel/assets/{Tenant-BvTTRTHS.js → Tenant-xqWSm2GP.js} +1 -1
  79. package/src/assets/web-panel/assets/{Terminal-DMOQOtkj.js → Terminal-D1Ttgjsi.js} +2 -2
  80. package/src/assets/web-panel/assets/{TimelineRenderer-CnudkJxk.js → TimelineRenderer-Da2lYs5D.js} +1 -1
  81. package/src/assets/web-panel/assets/{Tokens-VW6Wocdp.js → Tokens-B34-SduO.js} +1 -1
  82. package/src/assets/web-panel/assets/{Trigger-BtOxZqP6.js → Trigger-C8zyYm4R.js} +1 -1
  83. package/src/assets/web-panel/assets/{Trust-XcGJoTQx.js → Trust-D1Pvqems.js} +1 -1
  84. package/src/assets/web-panel/assets/{UkeySign-aASNCs5j.js → UkeySign-Do3VVnAy.js} +1 -1
  85. package/src/assets/web-panel/assets/{VideoEditing-Bz89M52u.js → VideoEditing-Dz7egVIA.js} +1 -1
  86. package/src/assets/web-panel/assets/{Wallet-uU4dSS_N.js → Wallet-Dcuw-OxR.js} +3 -3
  87. package/src/assets/web-panel/assets/{WebAuthn-Brrroxgr.js → WebAuthn-DPlw-QsB.js} +3 -3
  88. package/src/assets/web-panel/assets/{WorkflowEditor-Cny-evI9.js → WorkflowEditor-h4OsnU5q.js} +1 -1
  89. package/src/assets/web-panel/assets/{chat-CJ5iSwWq.js → chat-eO9wEwrW.js} +1 -1
  90. package/src/assets/web-panel/assets/{colors-DWa-2flG.js → colors-34lSmOXw.js} +1 -1
  91. package/src/assets/web-panel/assets/{compact-item-DFwUfptU.js → compact-item-CK4kEWJ4.js} +1 -1
  92. package/src/assets/web-panel/assets/{createContext-FHWWcyeB.js → createContext-E0A57xed.js} +1 -1
  93. package/src/assets/web-panel/assets/devWarning-CF3xafX2.js +1 -0
  94. package/src/assets/web-panel/assets/{hasIn-QY_TElrN.js → hasIn-BD9ZMGAl.js} +1 -1
  95. package/src/assets/web-panel/assets/{index-BcVr-LOk.js → index--N0u6kTG.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-CUiTugu3.js → index-8qMA1DWQ.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-0umhind6.js → index-B0rkHxKK.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-wqiOz655.js → index-B_G_ElKO.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-B18zERdP.js → index-BbX_Dted.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-Dy2PnKZx.js → index-Bjs90Eh9.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-th467RN6.js → index-BmNbU2Z6.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-uRUZdL7I.js → index-Brqc9Emx.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-hw1J_Oxs.js → index-BsGmo6v1.js} +1 -1
  104. package/src/assets/web-panel/assets/index-C907rPwd.js +1 -0
  105. package/src/assets/web-panel/assets/{index-CjejB-z9.js → index-CT1_eRL-.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-DaHvj4jA.js → index-CZBaqe3d.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-B33frlaD.js → index-CZkFMeWL.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-BYbwQ7SP.js → index-Ch175NUw.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-va4Rt-yM.js → index-CsrKJJcX.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-DDpXDi4J.js → index-CuSau5ya.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-D-Mhq8K6.js → index-Cx3Jn1r0.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-CKS7n6mE.js → index-Cz3unNfL.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-BRsGZBHc.js → index-D4bB_x_v.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-Bd7McYpJ.js → index-DCn-ECvK.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-DUfILsc-.js → index-DFLE2qO9.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-DUepuy7O.js → index-DGRxt5wj.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-BR4RMPnB.js → index-DONOUtlz.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-Dlq-u9E4.js → index-DP-UZAQN.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-DCHMVYG1.js → index-Da5fmOHB.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-BiHRihC0.js → index-DcE1BspQ.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-CGv5In_T.js → index-DcbgVLOH.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-BQCtBurK.js → index-DeXNCyQJ.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-D2rPJ6Sv.js → index-DiT_REby.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-CUoLd1dt.js → index-DpfisY1g.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-2ufsNuVn.js → index-DrOalGut.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-aTiI7lOQ.js → index-DrSAAuJj.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-BUNwuu5v.js → index-DrsDA_md.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-CkmgbT7h.js → index-DvKcroix.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-BEjwv2x6.js → index-DzXjP44T.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-CeGn0A4W.js → index-MIg5Z8qe.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-C5F1vwec.js → index-o8pYehRq.js} +3 -3
  132. package/src/assets/web-panel/assets/index-wueRSK2d.js +1 -0
  133. package/src/assets/web-panel/assets/{index-w3SdYwaC.js → index-yAGBu2E0.js} +1 -1
  134. package/src/assets/web-panel/assets/{initDefaultProps-BeSPUFDz.js → initDefaultProps-DMTkAomF.js} +1 -1
  135. package/src/assets/web-panel/assets/{motion-Dcajvjm9.js → motion-Cnti1F5g.js} +1 -1
  136. package/src/assets/web-panel/assets/{move-B76orau-.js → move-CGxmHUga.js} +1 -1
  137. package/src/assets/web-panel/assets/{mtc-parser-zB6yFwcX.js → mtc-parser-CuwwLoq7.js} +1 -1
  138. package/src/assets/web-panel/assets/{omit-BsbNjz8w.js → omit-BpdlTkPM.js} +1 -1
  139. package/src/assets/web-panel/assets/{pickAttrs-BiJ9tssQ.js → pickAttrs-D7nWrThp.js} +1 -1
  140. package/src/assets/web-panel/assets/{placementArrow-BdfMjMeN.js → placementArrow-Bhx0TV8F.js} +1 -1
  141. package/src/assets/web-panel/assets/{responsiveObserve-rV4LGpbU.js → responsiveObserve-CZ1KesZh.js} +1 -1
  142. package/src/assets/web-panel/assets/{slide-HsVw1qFQ.js → slide-CnldF8J6.js} +1 -1
  143. package/src/assets/web-panel/assets/{statusUtils-D1ry8XPE.js → statusUtils-CZfo_GOA.js} +1 -1
  144. package/src/assets/web-panel/assets/{styleChecker-B1t6aQQ_.js → styleChecker-B2QCcAv5.js} +1 -1
  145. package/src/assets/web-panel/assets/{useFlexGapSupport-C8qbl-9w.js → useFlexGapSupport-DzzjIS4J.js} +1 -1
  146. package/src/assets/web-panel/assets/{useFs-R7g_mYTC.js → useFs-B_atg9M0.js} +1 -1
  147. package/src/assets/web-panel/assets/{usePersonalDataHub-Cd-kCe7Z.js → usePersonalDataHub-DhZs3QYN.js} +1 -1
  148. package/src/assets/web-panel/assets/{vnode-9WhK5UWA.js → vnode-DcePTYAm.js} +1 -1
  149. package/src/assets/web-panel/assets/{zoom-CUqppPco.js → zoom-BYmlnjRk.js} +1 -1
  150. package/src/assets/web-panel/index.html +1 -1
  151. package/src/command-help-index.json +2 -2
  152. package/src/commands/agent.js +19 -1
  153. package/src/commands/evolution-knowledge.js +54 -0
  154. package/src/commands/evolution-workbench.js +83 -0
  155. package/src/commands/evolution.js +6 -1
  156. package/src/commands/serve.js +47 -0
  157. package/src/commands/skill.js +158 -16
  158. package/src/data/changelog.json +26 -0
  159. package/src/gateways/ws/session-protocol.js +2 -0
  160. package/src/gateways/ws/ws-agent-handler.js +124 -69
  161. package/src/gateways/ws/ws-server.js +19 -0
  162. package/src/generated/cc-agent-protocol.schema.json +7 -1
  163. package/src/harness/jsonl-session-store.js +25 -1
  164. package/src/index.js +11 -3
  165. package/src/lazy-dispatch.js +9 -1
  166. package/src/lib/app-server/cli-agent-kernel-adapter.js +8 -0
  167. package/src/lib/app-server/graph-runtime.js +40 -1
  168. package/src/lib/app-server/server.js +181 -3
  169. package/src/lib/app-server/websocket-transport.js +23 -0
  170. package/src/lib/evolution/agent-evolution-runtime-composition-brand.js +17 -0
  171. package/src/lib/evolution/agent-evolution-runtime-composition.js +165 -1
  172. package/src/lib/evolution/controlled-skill-production-pilot.js +912 -0
  173. package/src/lib/evolution/evolution-artifact-ports.js +30 -0
  174. package/src/lib/evolution/evolution-deployment-loader.js +208 -0
  175. package/src/lib/evolution/evolution-raw-crypto-shred.js +185 -0
  176. package/src/lib/evolution/evolution-release-train-ledger-adapter.js +335 -0
  177. package/src/lib/evolution/evolution-release-train.js +538 -0
  178. package/src/lib/evolution/evolution-workbench-batch-executor.js +195 -0
  179. package/src/lib/evolution/evolution-workbench-cli-host.js +169 -0
  180. package/src/lib/evolution/evolution-workbench-metrics-ledger-adapter.js +648 -0
  181. package/src/lib/evolution/evolution-workbench-metrics.js +943 -0
  182. package/src/lib/evolution/evolution-workbench-projection.js +753 -0
  183. package/src/lib/evolution/evolution-workbench-version-control.js +272 -0
  184. package/src/lib/evolution/evolvable-artifact-ledger-adapter.js +688 -0
  185. package/src/lib/evolution/governed-knowledge-artifact-lifecycle.js +364 -0
  186. package/src/lib/evolution/governed-knowledge-conflict-merge.js +352 -0
  187. package/src/lib/evolution/governed-knowledge-dependency-authority.js +273 -0
  188. package/src/lib/evolution/governed-knowledge-dependency-ledger-executor.js +646 -0
  189. package/src/lib/evolution/governed-knowledge-merge-ledger-executor.js +671 -0
  190. package/src/lib/evolution/governed-knowledge-merge-publisher-authority.js +310 -0
  191. package/src/lib/evolution/governed-knowledge-node-crypto-authority.js +348 -0
  192. package/src/lib/evolution/governed-knowledge-rbac-approval-authority.js +621 -0
  193. package/src/lib/evolution/governed-knowledge-review-host.js +249 -0
  194. package/src/lib/evolution/governed-knowledge-sync-ledger-adapter.js +729 -0
  195. package/src/lib/evolution/governed-knowledge-sync-merge-publisher.js +312 -0
  196. package/src/lib/evolution/governed-knowledge-sync.js +795 -0
  197. package/src/lib/evolution/governed-knowledge-trust-ledger.js +707 -0
  198. package/src/lib/evolution/governed-skill-marketplace.js +430 -0
  199. package/src/lib/evolution/governed-wiki-pruning.js +435 -0
  200. package/src/lib/evolution/skill-outcome-index-authority.js +268 -0
  201. package/src/lib/evolution/skill-outcome-source-catalog-authority.js +237 -0
  202. package/src/lib/evolution/skill-writer-inventory-manifest.js +7 -6
  203. package/src/lib/evolution/statistical-progressive-canary.js +683 -0
  204. package/src/lib/evolution/wikiskill-benchmark.js +510 -0
  205. package/src/lib/public-ide-capability-manifest.js +4 -0
  206. package/src/lib/session-host-lease.js +11 -16
  207. package/src/lib/skill-outcome-authority.js +43 -0
  208. package/src/lib/skill-outcome-transcript-authority.js +252 -0
  209. package/src/lib/skill-retrieval-router-benchmark.js +135 -0
  210. package/src/lib/skill-retrieval-router.js +235 -0
  211. package/src/lib/skill-vector-authority.js +325 -0
  212. package/src/lib/skill-vector-process-authority.js +386 -0
  213. package/src/repl/agent-repl.js +7 -1
  214. package/src/runtime/agent-core.js +133 -13
  215. package/src/runtime/agent-runtime.js +42 -0
  216. package/src/runtime/headless-runner.js +32 -0
  217. package/src/runtime/headless-stream.js +39 -1
  218. package/src/runtime/runtime-factory.js +62 -4
  219. package/src/assets/web-panel/assets/ChatBubbleRenderer-eMmw1eZF.js +0 -1
  220. package/src/assets/web-panel/assets/devWarning-DxufPwXC.js +0 -1
  221. package/src/assets/web-panel/assets/index-ZMTB9p5z.js +0 -1
  222. package/src/assets/web-panel/assets/index-_PvIDelE.js +0 -1
@@ -71,6 +71,15 @@ export const EVOLUTION_ARTIFACT_LEDGER_RETENTION_TYPES = Object.freeze([
71
71
  "skill-registry-transition-request",
72
72
  "skill-registry-transition-settlement",
73
73
  "evolution-run-event",
74
+ "evolution-release-train-checkpoint",
75
+ "evolvable-artifact-candidate",
76
+ "evolvable-artifact-transition",
77
+ "evolution-workbench-metrics-receipt-retention",
78
+ "evolution-workbench-metrics-snapshot",
79
+ "governed-knowledge-sync-record",
80
+ "governed-knowledge-merge-operation",
81
+ "governed-knowledge-dependency-operation",
82
+ "governed-knowledge-trust-record",
74
83
  "structured-memory-authority-receipt",
75
84
  "structured-memory-event",
76
85
  "structured-memory-snapshot",
@@ -100,6 +109,15 @@ export const EVOLUTION_ARTIFACT_TYPES = Object.freeze([
100
109
  "evaluation",
101
110
  "evaluation-result",
102
111
  "evolution-run-event",
112
+ "evolution-release-train-checkpoint",
113
+ "evolvable-artifact-candidate",
114
+ "evolvable-artifact-transition",
115
+ "evolution-workbench-metrics-receipt-retention",
116
+ "evolution-workbench-metrics-snapshot",
117
+ "governed-knowledge-sync-record",
118
+ "governed-knowledge-merge-operation",
119
+ "governed-knowledge-dependency-operation",
120
+ "governed-knowledge-trust-record",
103
121
  "evidence",
104
122
  "model-projection",
105
123
  "policy",
@@ -307,6 +325,18 @@ const LEDGER_RETENTION_PURPOSES_BY_TYPE = new Map([
307
325
  ["skill-registry-transition-request", new Set(["evolution-ledger"])],
308
326
  ["skill-registry-transition-settlement", new Set(["evolution-ledger"])],
309
327
  ["evolution-run-event", new Set(["evolution-ledger"])],
328
+ ["evolution-release-train-checkpoint", new Set(["evolution-ledger"])],
329
+ ["evolvable-artifact-candidate", new Set(["evolution-ledger"])],
330
+ ["evolvable-artifact-transition", new Set(["evolution-ledger"])],
331
+ [
332
+ "evolution-workbench-metrics-receipt-retention",
333
+ new Set(["evolution-ledger"]),
334
+ ],
335
+ ["evolution-workbench-metrics-snapshot", new Set(["evolution-ledger"])],
336
+ ["governed-knowledge-sync-record", new Set(["evolution-ledger"])],
337
+ ["governed-knowledge-merge-operation", new Set(["evolution-ledger"])],
338
+ ["governed-knowledge-dependency-operation", new Set(["evolution-ledger"])],
339
+ ["governed-knowledge-trust-record", new Set(["evolution-ledger"])],
310
340
  ["wiki-revision", new Set(["evolution-ledger"])],
311
341
  ["structured-memory-authority-receipt", new Set(["evolution-ledger"])],
312
342
  ["structured-memory-event", new Set(["evolution-ledger"])],
@@ -0,0 +1,208 @@
1
+ import { createHash, createPublicKey, verify } from "node:crypto";
2
+ import { readFile, realpath } from "node:fs/promises";
3
+ import { isAbsolute } from "node:path";
4
+ import { types as utilTypes } from "node:util";
5
+
6
+ export const EVOLUTION_DEPLOYMENT_DESCRIPTOR_SCHEMA =
7
+ "chainlesschain.evolution-deployment-descriptor/v1";
8
+
9
+ const DIGEST = /^sha256:[a-f0-9]{64}$/u;
10
+ const SUPPORTED_COMMANDS = new Set(["agent", "evolution", "serve"]);
11
+
12
+ function canonical(value) {
13
+ if (value === null || typeof value !== "object") return JSON.stringify(value);
14
+ if (Array.isArray(value)) return `[${value.map(canonical).join(",")}]`;
15
+ return `{${Object.keys(value)
16
+ .sort()
17
+ .map((key) => `${JSON.stringify(key)}:${canonical(value[key])}`)
18
+ .join(",")}}`;
19
+ }
20
+
21
+ function sha256(bytes) {
22
+ return `sha256:${createHash("sha256").update(bytes).digest("hex")}`;
23
+ }
24
+
25
+ function exactKeys(value, keys, name) {
26
+ if (!value || typeof value !== "object" || Array.isArray(value))
27
+ throw new TypeError(`${name} must be an object`);
28
+ if (canonical(Object.keys(value).sort()) !== canonical([...keys].sort()))
29
+ throw new TypeError(`${name} has unexpected or missing fields`);
30
+ }
31
+
32
+ function normalizeDescriptor(value) {
33
+ exactKeys(
34
+ value,
35
+ [
36
+ "schema",
37
+ "revision",
38
+ "modulePath",
39
+ "moduleDigest",
40
+ "trustRootDigest",
41
+ "commands",
42
+ "signature",
43
+ ],
44
+ "evolution deployment descriptor",
45
+ );
46
+ if (value.schema !== EVOLUTION_DEPLOYMENT_DESCRIPTOR_SCHEMA)
47
+ throw new TypeError("evolution deployment descriptor schema is invalid");
48
+ if (!Number.isSafeInteger(value.revision) || value.revision < 1)
49
+ throw new TypeError("evolution deployment descriptor revision is invalid");
50
+ if (typeof value.modulePath !== "string" || !isAbsolute(value.modulePath))
51
+ throw new TypeError("evolution deployment modulePath must be absolute");
52
+ if (!DIGEST.test(value.moduleDigest ?? ""))
53
+ throw new TypeError("evolution deployment moduleDigest is invalid");
54
+ if (!DIGEST.test(value.trustRootDigest ?? ""))
55
+ throw new TypeError("evolution deployment trustRootDigest is invalid");
56
+ if (
57
+ !Array.isArray(value.commands) ||
58
+ value.commands.length === 0 ||
59
+ new Set(value.commands).size !== value.commands.length ||
60
+ value.commands.some((command) => !SUPPORTED_COMMANDS.has(command))
61
+ )
62
+ throw new TypeError("evolution deployment commands are invalid");
63
+ if (
64
+ typeof value.signature !== "string" ||
65
+ value.signature === "" ||
66
+ !/^[A-Za-z0-9+/]+={0,2}$/u.test(value.signature)
67
+ )
68
+ throw new TypeError("evolution deployment signature is invalid");
69
+ return Object.freeze({
70
+ ...value,
71
+ commands: Object.freeze([...value.commands].sort()),
72
+ });
73
+ }
74
+
75
+ export function serializeEvolutionDeploymentDescriptorPayload(descriptor) {
76
+ const value = normalizeDescriptor({ ...descriptor, signature: "AA==" });
77
+ return canonical({
78
+ schema: value.schema,
79
+ revision: value.revision,
80
+ modulePath: value.modulePath,
81
+ moduleDigest: value.moduleDigest,
82
+ trustRootDigest: value.trustRootDigest,
83
+ commands: value.commands,
84
+ });
85
+ }
86
+
87
+ export function computeEvolutionDeploymentDigest(bytes) {
88
+ return sha256(bytes);
89
+ }
90
+
91
+ function parseJson(bytes) {
92
+ try {
93
+ return JSON.parse(Buffer.from(bytes).toString("utf8"));
94
+ } catch {
95
+ throw new Error("evolution deployment descriptor is not valid JSON");
96
+ }
97
+ }
98
+
99
+ function dependencies(value, commandName) {
100
+ if (
101
+ !value ||
102
+ typeof value !== "object" ||
103
+ Array.isArray(value) ||
104
+ utilTypes.isProxy(value)
105
+ )
106
+ throw new TypeError(
107
+ `evolution deployment returned invalid dependencies for ${commandName}`,
108
+ );
109
+ return Object.freeze({ ...value });
110
+ }
111
+
112
+ async function loadBuiltInFactories(commandName) {
113
+ const factories = {};
114
+ if (commandName === "evolution" || commandName === "serve") {
115
+ const [
116
+ { createEvolutionWorkbenchCliHost },
117
+ { createGovernedKnowledgeReviewHost },
118
+ ] = await Promise.all([
119
+ import("./evolution-workbench-cli-host.js"),
120
+ import("./governed-knowledge-review-host.js"),
121
+ ]);
122
+ factories.createEvolutionWorkbenchCliHost = createEvolutionWorkbenchCliHost;
123
+ factories.createGovernedKnowledgeReviewHost =
124
+ createGovernedKnowledgeReviewHost;
125
+ }
126
+ if (commandName === "agent" || commandName === "serve") {
127
+ const { createAgentEvolutionRuntimeComposition } =
128
+ await import("./agent-evolution-runtime-composition.js");
129
+ factories.createAgentEvolutionRuntimeComposition =
130
+ createAgentEvolutionRuntimeComposition;
131
+ }
132
+ return Object.freeze(factories);
133
+ }
134
+
135
+ export async function loadEvolutionDeploymentCommandDependencies(
136
+ commandName,
137
+ {
138
+ env = process.env,
139
+ read = readFile,
140
+ resolveRealPath = realpath,
141
+ importModule = (url) => import(url),
142
+ } = {},
143
+ ) {
144
+ if (!SUPPORTED_COMMANDS.has(commandName)) return null;
145
+ const descriptorPath = env.CHAINLESSCHAIN_EVOLUTION_DEPLOYMENT_DESCRIPTOR;
146
+ const trustRootPath = env.CHAINLESSCHAIN_EVOLUTION_DEPLOYMENT_TRUST_ROOT;
147
+ if (!descriptorPath && !trustRootPath) return null;
148
+ if (!descriptorPath || !trustRootPath)
149
+ throw new Error(
150
+ "evolution deployment requires both descriptor and trust root",
151
+ );
152
+ if (!isAbsolute(descriptorPath) || !isAbsolute(trustRootPath))
153
+ throw new Error("evolution deployment paths must be absolute");
154
+
155
+ const [descriptorBytes, trustRootBytes] = await Promise.all([
156
+ read(await resolveRealPath(descriptorPath)),
157
+ read(await resolveRealPath(trustRootPath)),
158
+ ]);
159
+ const descriptor = normalizeDescriptor(parseJson(descriptorBytes));
160
+ if (sha256(trustRootBytes) !== descriptor.trustRootDigest)
161
+ throw new Error("evolution deployment trust root digest mismatch");
162
+ let publicKey;
163
+ try {
164
+ publicKey = createPublicKey(trustRootBytes);
165
+ } catch {
166
+ throw new Error("evolution deployment trust root is invalid");
167
+ }
168
+ const payload = serializeEvolutionDeploymentDescriptorPayload(descriptor);
169
+ if (
170
+ !verify(
171
+ null,
172
+ Buffer.from(payload, "utf8"),
173
+ publicKey,
174
+ Buffer.from(descriptor.signature, "base64"),
175
+ )
176
+ )
177
+ throw new Error("evolution deployment descriptor signature rejected");
178
+ if (!descriptor.commands.includes(commandName)) return null;
179
+
180
+ const modulePath = await resolveRealPath(descriptor.modulePath);
181
+ const moduleBytes = await read(modulePath);
182
+ if (moduleBytes.byteLength === 0 || moduleBytes.byteLength > 4 * 1024 * 1024)
183
+ throw new Error("evolution deployment module size is invalid");
184
+ if (sha256(moduleBytes) !== descriptor.moduleDigest)
185
+ throw new Error("evolution deployment module digest mismatch");
186
+ // Import the exact bytes that were authenticated. Importing modulePath here
187
+ // would reopen a pathname-replacement window between hashing and execution.
188
+ // Deployment entrypoints are therefore single-file ESM bundles; any external
189
+ // authority adapters they open remain the deployment's own attested boundary.
190
+ const moduleUrl = `data:text/javascript;base64,${Buffer.from(
191
+ moduleBytes,
192
+ ).toString("base64")}#${encodeURIComponent(descriptor.moduleDigest)}`;
193
+ const loaded = await importModule(moduleUrl);
194
+ if (typeof loaded?.createChainlessChainCommandDependencies !== "function")
195
+ throw new Error(
196
+ "evolution deployment module must export createChainlessChainCommandDependencies",
197
+ );
198
+ return dependencies(
199
+ await loaded.createChainlessChainCommandDependencies(
200
+ Object.freeze({
201
+ commandName,
202
+ descriptor: Object.freeze({ ...descriptor }),
203
+ factories: await loadBuiltInFactories(commandName),
204
+ }),
205
+ ),
206
+ commandName,
207
+ );
208
+ }
@@ -0,0 +1,185 @@
1
+ import { createHash } from "node:crypto";
2
+
3
+ export const EVOLUTION_RAW_CRYPTO_SHRED_SCHEMA =
4
+ "chainlesschain.evolution-raw-crypto-shred/v1";
5
+ export const EVOLUTION_RAW_DELETION_TOMBSTONE_SCHEMA =
6
+ "chainlesschain.evolution-raw-deletion-tombstone/v1";
7
+
8
+ const DIGEST = /^sha256:[a-f0-9]{64}$/u;
9
+
10
+ function canonical(value) {
11
+ if (value === null || typeof value !== "object") return JSON.stringify(value);
12
+ if (Array.isArray(value)) return `[${value.map(canonical).join(",")}]`;
13
+ return `{${Object.keys(value)
14
+ .sort()
15
+ .map((key) => `${JSON.stringify(key)}:${canonical(value[key])}`)
16
+ .join(",")}}`;
17
+ }
18
+
19
+ function hash(domain, value) {
20
+ return `sha256:${createHash("sha256")
21
+ .update(domain)
22
+ .update("\0")
23
+ .update(canonical(value))
24
+ .digest("hex")}`;
25
+ }
26
+
27
+ function freeze(value) {
28
+ if (value && typeof value === "object" && !Object.isFrozen(value)) {
29
+ Object.freeze(value);
30
+ for (const child of Object.values(value)) freeze(child);
31
+ }
32
+ return value;
33
+ }
34
+
35
+ function capture(ports, name) {
36
+ if (typeof ports?.[name] !== "function")
37
+ throw new TypeError(`Raw crypto-shred port ${name} is required`);
38
+ return ports[name].bind(ports);
39
+ }
40
+
41
+ function string(value, name) {
42
+ if (typeof value !== "string" || value.trim() === "")
43
+ throw new TypeError(`${name} is required`);
44
+ return value;
45
+ }
46
+
47
+ function digest(value, name) {
48
+ if (!DIGEST.test(value ?? "")) throw new TypeError(`${name} is invalid`);
49
+ return value;
50
+ }
51
+
52
+ function verifyPruningCall(call, tenantId) {
53
+ const request = call?.request;
54
+ if (
55
+ request?.tenantId !== tenantId ||
56
+ request.operation !== "crypto-shred" ||
57
+ !DIGEST.test(call?.requestDigest ?? "") ||
58
+ call.requestDigest !==
59
+ hash("chainlesschain.governed-wiki-pruning-operation/v1", request)
60
+ )
61
+ throw new Error("Raw crypto-shred request is not pruning-plan-bound");
62
+ const payload = request.payload;
63
+ if (
64
+ typeof payload?.rawArtifactRef !== "string" ||
65
+ !payload.rawArtifactRef.startsWith(`artifact://${tenantId}/raw/`) ||
66
+ typeof payload.keyRef !== "string" ||
67
+ !payload.keyRef.startsWith(`kms://${tenantId}/`)
68
+ )
69
+ throw new Error("Raw crypto-shred target is cross-tenant or incomplete");
70
+ for (const [value, name] of [
71
+ [request.planDigest, "planDigest"],
72
+ [request.wikiStateDigest, "wikiStateDigest"],
73
+ [payload.sourceDigest, "sourceDigest"],
74
+ [payload.rawCipherDigest, "rawCipherDigest"],
75
+ [payload.receiptDigest, "deletionReceiptDigest"],
76
+ ])
77
+ digest(value, name);
78
+ string(payload.evidenceRef, "evidenceRef");
79
+ string(payload.artifactRef, "artifactRef");
80
+ return request;
81
+ }
82
+
83
+ export class EvolutionRawCryptoShred {
84
+ constructor({ tenantId, ports } = {}) {
85
+ this.tenantId = string(tenantId, "tenantId");
86
+ this._verifyDeletionReceipt = capture(ports, "verifyDeletionReceipt");
87
+ this._destroyKey = capture(ports, "destroyKey");
88
+ this._confirmKeyDestroyed = capture(ports, "confirmKeyDestroyed");
89
+ this._retainTombstone = capture(ports, "retainTombstone");
90
+ }
91
+
92
+ async shred(call) {
93
+ const request = verifyPruningCall(call, this.tenantId);
94
+ const target = request.payload;
95
+ const deletion = await this._verifyDeletionReceipt({
96
+ tenantId: this.tenantId,
97
+ receiptDigest: target.receiptDigest,
98
+ });
99
+ if (
100
+ deletion?.authenticated !== true ||
101
+ deletion.decision !== "delete" ||
102
+ deletion.tenantId !== this.tenantId ||
103
+ deletion.receiptDigest !== target.receiptDigest ||
104
+ deletion.evidenceRef !== target.evidenceRef ||
105
+ deletion.sourceDigest !== target.sourceDigest ||
106
+ deletion.artifactRef !== target.artifactRef ||
107
+ deletion.rawArtifactRef !== target.rawArtifactRef ||
108
+ deletion.rawCipherDigest !== target.rawCipherDigest ||
109
+ deletion.keyRef !== target.keyRef
110
+ )
111
+ throw new Error("Raw deletion receipt was substituted");
112
+ const destructionCore = {
113
+ schema: EVOLUTION_RAW_CRYPTO_SHRED_SCHEMA,
114
+ tenantId: this.tenantId,
115
+ planDigest: request.planDigest,
116
+ wikiStateDigest: request.wikiStateDigest,
117
+ evidenceRef: target.evidenceRef,
118
+ rawArtifactRef: target.rawArtifactRef,
119
+ rawCipherDigest: target.rawCipherDigest,
120
+ keyRef: target.keyRef,
121
+ deletionReceiptDigest: target.receiptDigest,
122
+ };
123
+ const destructionRequest = freeze({
124
+ ...destructionCore,
125
+ requestDigest: hash(EVOLUTION_RAW_CRYPTO_SHRED_SCHEMA, destructionCore),
126
+ });
127
+ const destroyed = await this._destroyKey(destructionRequest);
128
+ if (
129
+ destroyed?.authenticated !== true ||
130
+ destroyed.durable !== true ||
131
+ destroyed.destroyed !== true ||
132
+ destroyed.keyRef !== target.keyRef ||
133
+ destroyed.requestDigest !== destructionRequest.requestDigest ||
134
+ !DIGEST.test(destroyed.receiptDigest ?? "")
135
+ )
136
+ throw new Error("Raw encryption key destruction was not durable");
137
+ const confirmation = await this._confirmKeyDestroyed({
138
+ tenantId: this.tenantId,
139
+ keyRef: target.keyRef,
140
+ destructionReceiptDigest: destroyed.receiptDigest,
141
+ });
142
+ if (
143
+ confirmation?.authenticated !== true ||
144
+ confirmation.destroyed !== true ||
145
+ confirmation.keyRef !== target.keyRef ||
146
+ confirmation.destructionReceiptDigest !== destroyed.receiptDigest ||
147
+ !DIGEST.test(confirmation.receiptDigest ?? "")
148
+ )
149
+ throw new Error("Raw encryption key destruction could not be confirmed");
150
+ const tombstoneCore = {
151
+ schema: EVOLUTION_RAW_DELETION_TOMBSTONE_SCHEMA,
152
+ tenantId: this.tenantId,
153
+ pruningRequestDigest: call.requestDigest,
154
+ destructionRequestDigest: destructionRequest.requestDigest,
155
+ destructionReceiptDigest: destroyed.receiptDigest,
156
+ confirmationReceiptDigest: confirmation.receiptDigest,
157
+ evidenceRef: target.evidenceRef,
158
+ rawArtifactRef: target.rawArtifactRef,
159
+ rawCipherDigest: target.rawCipherDigest,
160
+ deletionReceiptDigest: target.receiptDigest,
161
+ };
162
+ const tombstone = freeze({
163
+ ...tombstoneCore,
164
+ tombstoneDigest: hash(
165
+ EVOLUTION_RAW_DELETION_TOMBSTONE_SCHEMA,
166
+ tombstoneCore,
167
+ ),
168
+ });
169
+ const retained = await this._retainTombstone({ tombstone });
170
+ if (
171
+ retained?.authenticated !== true ||
172
+ retained.durable !== true ||
173
+ retained.tombstoneDigest !== tombstone.tombstoneDigest ||
174
+ !DIGEST.test(retained.receiptDigest ?? "")
175
+ )
176
+ throw new Error("Raw deletion tombstone was not durably retained");
177
+ return freeze({
178
+ authenticated: true,
179
+ durable: true,
180
+ requestDigest: call.requestDigest,
181
+ receiptDigest: retained.receiptDigest,
182
+ tombstoneDigest: tombstone.tombstoneDigest,
183
+ });
184
+ }
185
+ }