chainlesschain 0.166.46 → 0.166.48

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 (232) hide show
  1. package/README.md +6 -4
  2. package/package.json +4 -2
  3. package/src/assets/web-panel/assets/{AIOps-Cp8KiMmv.js → AIOps-BLGEffkh.js} +1 -1
  4. package/src/assets/web-panel/assets/{ActionButton-B4d9BGsm.js → ActionButton-Cz1z2VGD.js} +1 -1
  5. package/src/assets/web-panel/assets/{Analytics-Cf9yXTkv.js → Analytics-C3j9cf6q.js} +3 -3
  6. package/src/assets/web-panel/assets/{AppLayout-40UkmxtP.js → AppLayout-BR9ERuCA.js} +4 -4
  7. package/src/assets/web-panel/assets/{Artifacts-Ckkb4oOA.js → Artifacts-CozJCm4y.js} +1 -1
  8. package/src/assets/web-panel/assets/{Audit-Dnf569k5.js → Audit-DC5g9Ra2.js} +1 -1
  9. package/src/assets/web-panel/assets/{BackgroundAgents-CA6bLem4.js → BackgroundAgents-B1zrQ0dW.js} +1 -1
  10. package/src/assets/web-panel/assets/{Backup-ChQU0I_Q.js → Backup-ChVnfjpm.js} +1 -1
  11. package/src/assets/web-panel/assets/{BaseInput-BHeZXnNN.js → BaseInput-8_vLQsLf.js} +1 -1
  12. package/src/assets/web-panel/assets/{Chat-DcFVYB2E.js → Chat-Dct9bm6L.js} +5 -5
  13. package/src/assets/web-panel/assets/ChatBubbleRenderer-BvoSsCKh.js +1 -0
  14. package/src/assets/web-panel/assets/{Checkbox-2PDbejv2.js → Checkbox-DZQIsCIC.js} +1 -1
  15. package/src/assets/web-panel/assets/{Codegen-DJBn1RAu.js → Codegen-CdzHxmnq.js} +1 -1
  16. package/src/assets/web-panel/assets/{Col-CPRq7n6y.js → Col-DdAN8LeW.js} +1 -1
  17. package/src/assets/web-panel/assets/{Community-axvINFMi.js → Community-CNgjT9MA.js} +1 -1
  18. package/src/assets/web-panel/assets/{Compact-_OX4Qbe0.js → Compact-BtQiX6G-.js} +1 -1
  19. package/src/assets/web-panel/assets/{Compliance-DWAkvzRL.js → Compliance-OGX5ma3j.js} +1 -1
  20. package/src/assets/web-panel/assets/{Cowork-CUIJ25oj.js → Cowork-CgugQnGM.js} +3 -3
  21. package/src/assets/web-panel/assets/{Cron-nR0m7H3_.js → Cron-Bpg7cPFD.js} +2 -2
  22. package/src/assets/web-panel/assets/{Crosschain-CgTLXzh_.js → Crosschain-D1hsuswf.js} +1 -1
  23. package/src/assets/web-panel/assets/{DID-BllzRB6Q.js → DID-miDRsMBw.js} +2 -2
  24. package/src/assets/web-panel/assets/{Dashboard-C9f0IIBN.js → Dashboard-CGcl8htP.js} +2 -2
  25. package/src/assets/web-panel/assets/{Dropdown-BkahetiO.js → Dropdown-BFaxTdVE.js} +1 -1
  26. package/src/assets/web-panel/assets/{EmailListRenderer-rartVC-k.js → EmailListRenderer-BQdGLZIO.js} +1 -1
  27. package/src/assets/web-panel/assets/{EvolutionSettings-BqpG3XHV.js → EvolutionSettings-bMvgBk6r.js} +1 -1
  28. package/src/assets/web-panel/assets/{FamilyGuardDashboard-DgUdFvw1.js → FamilyGuardDashboard-c1WVC_--.js} +1 -1
  29. package/src/assets/web-panel/assets/{Federation-oFpIQU6g.js → Federation-DyAcFrQY.js} +1 -1
  30. package/src/assets/web-panel/assets/{FormItemContext-BUH5xlyP.js → FormItemContext-CfwpfD2B.js} +1 -1
  31. package/src/assets/web-panel/assets/{GenericCardRenderer-ilRa-ueg.js → GenericCardRenderer-DkJcbBpS.js} +1 -1
  32. package/src/assets/web-panel/assets/{Git-DlHHSF8j.js → Git-DgYIrPJh.js} +2 -2
  33. package/src/assets/web-panel/assets/{Governance-yQiiXIWe.js → Governance-BF1tYPJ6.js} +1 -1
  34. package/src/assets/web-panel/assets/{Inference-BUDRVGOP.js → Inference-BFkwRIrU.js} +1 -1
  35. package/src/assets/web-panel/assets/{KnowledgeGraph-BaGyIoN1.js → KnowledgeGraph-DpCoqhBa.js} +1 -1
  36. package/src/assets/web-panel/assets/{Logs-C1cO6zE0.js → Logs-DU2qAJmD.js} +2 -2
  37. package/src/assets/web-panel/assets/{MarkdownRenderer-_z_Iaoes.js → MarkdownRenderer-QWv7UJLq.js} +1 -1
  38. package/src/assets/web-panel/assets/{Marketplace-CM8cGL0K.js → Marketplace-Dz9NUrfo.js} +1 -1
  39. package/src/assets/web-panel/assets/{McpTools-CDqAMU0U.js → McpTools-B67I3d5v.js} +3 -3
  40. package/src/assets/web-panel/assets/{Memory-CfB0-Ofv.js → Memory-crkElJSy.js} +2 -2
  41. package/src/assets/web-panel/assets/{MobileBridge-BL18ytvB.js → MobileBridge-BO20VbdX.js} +1 -1
  42. package/src/assets/web-panel/assets/{MobileProjects-PIyyxbuJ.js → MobileProjects-Ba-3gZZd.js} +1 -1
  43. package/src/assets/web-panel/assets/{Mtc-BTTrFCol.js → Mtc-BAHZM084.js} +4 -4
  44. package/src/assets/web-panel/assets/{MtcAudit-JHZn037c.js → MtcAudit-CL3DzajL.js} +4 -4
  45. package/src/assets/web-panel/assets/{Multisig-CMf9NEdB.js → Multisig-BSWWzvWH.js} +3 -3
  46. package/src/assets/web-panel/assets/{NLProgramming-Dhk3qaus.js → NLProgramming-fnxqXM_3.js} +1 -1
  47. package/src/assets/web-panel/assets/{Notes-6F8EarNN.js → Notes-qUZPIQXT.js} +3 -3
  48. package/src/assets/web-panel/assets/{NotificationSettings-gxdaVEit.js → NotificationSettings-x9Xrixqu.js} +1 -1
  49. package/src/assets/web-panel/assets/{OrderTableRenderer-gVgXQWdc.js → OrderTableRenderer-BtMtQUt7.js} +1 -1
  50. package/src/assets/web-panel/assets/{Organization-CzvHcDNO.js → Organization-C946Hzna.js} +4 -4
  51. package/src/assets/web-panel/assets/{Overflow-Dclx30Vv.js → Overflow-BYf8KIts.js} +1 -1
  52. package/src/assets/web-panel/assets/{P2P-CM0Wm9vZ.js → P2P-Cbqf5dnv.js} +2 -2
  53. package/src/assets/web-panel/assets/PdhVaultBrowser-rmxp0cuF.js +7 -0
  54. package/src/assets/web-panel/assets/{Permissions-B_oATenG.js → Permissions-CZBw45EW.js} +3 -3
  55. package/src/assets/web-panel/assets/{PersonalDataHub-CptiVBh5.js → PersonalDataHub-BKwUAt43.js} +4 -4
  56. package/src/assets/web-panel/assets/{Pipeline-DkHzgyyI.js → Pipeline-DmFD2QW4.js} +1 -1
  57. package/src/assets/web-panel/assets/{Privacy-DzZvwcKh.js → Privacy-KpuwWvt5.js} +1 -1
  58. package/src/assets/web-panel/assets/{ProjectInit-CzkCs-5G.js → ProjectInit-Bt8UheX6.js} +2 -2
  59. package/src/assets/web-panel/assets/{ProjectSettings-BB8dcxRD.js → ProjectSettings-2ZeAn9CP.js} +2 -2
  60. package/src/assets/web-panel/assets/{Projects-B7PW9CFY.js → Projects-zBuet8Zs.js} +1 -1
  61. package/src/assets/web-panel/assets/{Providers-Tfx-ti1V.js → Providers-DcEAnw6L.js} +1 -1
  62. package/src/assets/web-panel/assets/{QrScannerModal-EvWlNhfX.js → QrScannerModal-qF7liYG9.js} +1 -1
  63. package/src/assets/web-panel/assets/{QuickAsk-CUspgbNC.js → QuickAsk-qiESlVBJ.js} +1 -1
  64. package/src/assets/web-panel/assets/{Recommend-COY2g77J.js → Recommend-Bk-cQyi9.js} +1 -1
  65. package/src/assets/web-panel/assets/{RemoteSession-BzMBU6E6.js → RemoteSession-CwrekErS.js} +2 -2
  66. package/src/assets/web-panel/assets/{Reputation-RtYRF4YP.js → Reputation-Bmw_UQtW.js} +1 -1
  67. package/src/assets/web-panel/assets/{Row-Bva3l9Lc.js → Row-CPdqZIUX.js} +1 -1
  68. package/src/assets/web-panel/assets/{RssFeed-BhjzLvW3.js → RssFeed-D_W-xxvS.js} +2 -2
  69. package/src/assets/web-panel/assets/{Search-BYzT2PTR.js → Search-Hu0oDFj_.js} +1 -1
  70. package/src/assets/web-panel/assets/{Security-Bcl4-KTv.js → Security-DeRxUwmq.js} +3 -3
  71. package/src/assets/web-panel/assets/{Services-BRRa4A0f.js → Services-CsNmHFkf.js} +2 -2
  72. package/src/assets/web-panel/assets/{Skeleton-DYQ016qy.js → Skeleton-gv_Vz0tN.js} +1 -1
  73. package/src/assets/web-panel/assets/{Skills-CAUKL9JA.js → Skills-Dgg-_rCB.js} +1 -1
  74. package/src/assets/web-panel/assets/{Sla-BTyUqfuD.js → Sla-Bpu-bsEJ.js} +1 -1
  75. package/src/assets/web-panel/assets/{SpeechSettings-CUjMihrs.js → SpeechSettings-CrhleHuF.js} +1 -1
  76. package/src/assets/web-panel/assets/{SyncSettings-CvfOSupr.js → SyncSettings-JHjUN6I9.js} +2 -2
  77. package/src/assets/web-panel/assets/{Tasks-EvjNXrWH.js → Tasks-DKRWKkl9.js} +1 -1
  78. package/src/assets/web-panel/assets/{Templates-wPAp0EoM.js → Templates-leiWntLq.js} +1 -1
  79. package/src/assets/web-panel/assets/{Tenant-CP0D-q9Q.js → Tenant--1bYulvn.js} +1 -1
  80. package/src/assets/web-panel/assets/{Terminal-CQ0f2iFg.js → Terminal-C0y6FvSS.js} +2 -2
  81. package/src/assets/web-panel/assets/{TimelineRenderer-D3JrGSPb.js → TimelineRenderer-CQK4PVv4.js} +1 -1
  82. package/src/assets/web-panel/assets/{Tokens-yXf2PPp9.js → Tokens-DbIvF-DV.js} +1 -1
  83. package/src/assets/web-panel/assets/{Trigger-DfmMOoZ2.js → Trigger-CkXJ2vuq.js} +1 -1
  84. package/src/assets/web-panel/assets/{Trust-BTCyMgf1.js → Trust-B02WXJPw.js} +1 -1
  85. package/src/assets/web-panel/assets/{UkeySign-DKCwIBHi.js → UkeySign-VPMkfzmw.js} +1 -1
  86. package/src/assets/web-panel/assets/{VideoEditing-CQpDSzLO.js → VideoEditing-C5ezUnah.js} +1 -1
  87. package/src/assets/web-panel/assets/{Wallet-CyFrzC3K.js → Wallet-CYfvYRrY.js} +4 -4
  88. package/src/assets/web-panel/assets/{WebAuthn-D6Nr_1kd.js → WebAuthn-DtKl-kpr.js} +4 -4
  89. package/src/assets/web-panel/assets/{WorkflowEditor-CgR9tNrB.js → WorkflowEditor-DACITF-u.js} +1 -1
  90. package/src/assets/web-panel/assets/{chat-CRG_IeyP.js → chat-qnygfnLi.js} +1 -1
  91. package/src/assets/web-panel/assets/{colors-MdE3TStI.js → colors-D4mISLBD.js} +1 -1
  92. package/src/assets/web-panel/assets/{compact-item-B0LRuiNV.js → compact-item-BBPfxYGL.js} +1 -1
  93. package/src/assets/web-panel/assets/{createContext-B_V5fjcX.js → createContext-Byx4ndHp.js} +1 -1
  94. package/src/assets/web-panel/assets/devWarning-DBy6gsuI.js +1 -0
  95. package/src/assets/web-panel/assets/{hasIn-DSL-c_hr.js → hasIn-CGjLkkn3.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-DE7bSYmW.js → index-B8UpadHC.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-BD0w-888.js → index-B9jH-h4X.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-BbZZ7P_c.js → index-BN7_TSgU.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-BIDCNwy6.js → index-BNe2lCk6.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-CkN53KiJ.js → index-B_fHPZ8E.js} +1 -1
  101. package/src/assets/web-panel/assets/index-BfEDXk_E.js +1 -0
  102. package/src/assets/web-panel/assets/{index-BsAEd-Do.js → index-BklGH3YI.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-CS3bOhV7.js → index-BmKYaaGP.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-B3iW-mhn.js → index-BxQF1wCU.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-SmQfEHjp.js → index-ByA1NyFP.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-0200QxC4.js → index-BzeBBAl5.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-c8OqO3rq.js → index-C3abGsSW.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-C-aKWR2v.js → index-C9tcHs46.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-BNhWoD6d.js → index-CD5Btq6p.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-CVDi4rS9.js → index-CFMWjuav.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-CEOAZm5j.js → index-CMj8qmpX.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-C67dPW0L.js → index-CVUJjQAT.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-D3pJBTvo.js → index-CWhI8G14.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-DtOTppk8.js → index-CZjNamSU.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-DRRY44XP.js → index-CmHE-lY_.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-Tg3yl8wc.js → index-CoA8WsVr.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-CXMeisJK.js → index-Cpg3AWRy.js} +1 -1
  118. package/src/assets/web-panel/assets/index-CrxUwNM8.js +1 -0
  119. package/src/assets/web-panel/assets/{index-Bq8-2Ibv.js → index-CsVuQsY1.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-BHp1nSur.js → index-CydHMjwc.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-CPYshcic.js → index-DH6iC5b2.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-DBwBZwio.js → index-DZXhKAk9.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-Didyuq2Z.js → index-D_g9mA1N.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-CdHMc9LQ.js → index-DboTeuPF.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-C5dqieYX.js → index-DfgpKd64.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-CdplnAS9.js → index-Dmfe0L2Z.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-KaSejHjf.js → index-Dzni_5Qw.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-BpwGsAA-.js → index-J5JkStvY.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-OBhlHSMN.js → index-Ne8UGllV.js} +3 -3
  130. package/src/assets/web-panel/assets/{index-CZICtYJ0.js → index-O09jXbir.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-DVgTf7CZ.js → index-Y7el_3WS.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-BQAsL19t.js → index-c_tBkIlU.js} +1 -1
  133. package/src/assets/web-panel/assets/{index-BMm8tO2X.js → index-lKJWAmd4.js} +1 -1
  134. package/src/assets/web-panel/assets/{index-CNytQuFq.js → index-xzRKTy0R.js} +1 -1
  135. package/src/assets/web-panel/assets/{initDefaultProps-P8SBN6Di.js → initDefaultProps-XuhfEIhB.js} +1 -1
  136. package/src/assets/web-panel/assets/{motion-BubbjUT_.js → motion-Cbxh6AxO.js} +1 -1
  137. package/src/assets/web-panel/assets/{move-Chcykv0I.js → move-C7IEnFly.js} +1 -1
  138. package/src/assets/web-panel/assets/{mtc-parser-DyiYuGDu.js → mtc-parser-lLADx4LL.js} +1 -1
  139. package/src/assets/web-panel/assets/{omit-Rdwb_Neb.js → omit-mIbic_k-.js} +1 -1
  140. package/src/assets/web-panel/assets/{pickAttrs-CCr0MYHl.js → pickAttrs-_xIYEqu3.js} +1 -1
  141. package/src/assets/web-panel/assets/{placementArrow-B1ZXz3bb.js → placementArrow-ClB-E0ny.js} +1 -1
  142. package/src/assets/web-panel/assets/{responsiveObserve-BGEdwej6.js → responsiveObserve-D36Bg2ut.js} +1 -1
  143. package/src/assets/web-panel/assets/{slide-CpnsUMaT.js → slide-CUuO08Bl.js} +1 -1
  144. package/src/assets/web-panel/assets/{statusUtils-C7x-TVp_.js → statusUtils-BKahwLbv.js} +1 -1
  145. package/src/assets/web-panel/assets/{styleChecker-CC5k_791.js → styleChecker-2pT-T8vy.js} +1 -1
  146. package/src/assets/web-panel/assets/{useFlexGapSupport-BpZFKsJW.js → useFlexGapSupport-DyH5g7Rg.js} +1 -1
  147. package/src/assets/web-panel/assets/{useFs-CVq5HySy.js → useFs-CTOauB3X.js} +1 -1
  148. package/src/assets/web-panel/assets/{usePersonalDataHub-BGkdLryu.js → usePersonalDataHub-B02JYIMe.js} +1 -1
  149. package/src/assets/web-panel/assets/{vnode-uLtOUEK-.js → vnode-Do22wQrc.js} +1 -1
  150. package/src/assets/web-panel/assets/{zoom-BfVC9iUs.js → zoom-BfnL7rit.js} +1 -1
  151. package/src/assets/web-panel/index.html +1 -1
  152. package/src/command-help-index.json +3 -3
  153. package/src/commands/agent.js +8 -0
  154. package/src/commands/background-session.js +31 -3
  155. package/src/commands/chat.js +5 -1
  156. package/src/commands/eval.js +86 -28
  157. package/src/commands/llm.js +104 -1
  158. package/src/commands/plugin.js +161 -1
  159. package/src/commands/sandbox.js +121 -2
  160. package/src/commands/serve.js +11 -2
  161. package/src/commands/skill.js +29 -0
  162. package/src/data/changelog.json +26 -0
  163. package/src/gateways/ws/session-protocol.js +13 -0
  164. package/src/gateways/ws/ws-agent-handler.js +17 -0
  165. package/src/gateways/ws/ws-server.js +3 -0
  166. package/src/gateways/ws/ws-session-state.js +131 -0
  167. package/src/generated/cc-agent-protocol.schema.json +48 -1
  168. package/src/lazy-dispatch.js +8 -1
  169. package/src/lib/agent-sandbox.js +337 -53
  170. package/src/lib/app-server/cli-agent-kernel-adapter.js +28 -0
  171. package/src/lib/app-server/server.js +93 -0
  172. package/src/lib/background-agent-keeper-client.js +2 -0
  173. package/src/lib/background-agent-keeper-protocol.js +7 -0
  174. package/src/lib/background-agent-list-index.js +222 -0
  175. package/src/lib/background-agent-supervisor.js +232 -47
  176. package/src/lib/codex-app-server-adapter.js +82 -27
  177. package/src/lib/context-memory-kernel/durable-memory-port.js +31 -8
  178. package/src/lib/context-memory-kernel/provider-context.js +118 -19
  179. package/src/lib/deferred-question-context.js +278 -0
  180. package/src/lib/eval/evidence.js +202 -64
  181. package/src/lib/eval/plugin-suite.js +1181 -0
  182. package/src/lib/eval/runner.js +10 -3
  183. package/src/lib/evolution/agent-evolution-runtime-composition.js +236 -1
  184. package/src/lib/evolution/agent-model-projection.js +97 -1
  185. package/src/lib/evolution/evidence-backed-wiki-maintainer.js +154 -1
  186. package/src/lib/evolution/evolution-artifact-ports.js +6 -0
  187. package/src/lib/evolution/evolution-deployment-loader.js +87 -3
  188. package/src/lib/evolution/evolution-eval-gate.js +8 -0
  189. package/src/lib/evolution/evolution-eval-runtime-composition.js +255 -0
  190. package/src/lib/evolution/evolution-evidence-artifact-adapter.js +58 -2
  191. package/src/lib/evolution/evolution-ledger-file-backend.js +23 -2
  192. package/src/lib/evolution/evolution-ledger-manifest-chain.js +223 -7
  193. package/src/lib/evolution/evolution-ledger-v2-journal.js +525 -0
  194. package/src/lib/evolution/evolution-ledger-v2-manifest-backend.js +46 -2
  195. package/src/lib/evolution/evolution-ledger.js +57 -1
  196. package/src/lib/evolution/evolution-run-ledger-adapter.js +93 -0
  197. package/src/lib/evolution/evolution-run-wiki-evidence-resolver.js +259 -0
  198. package/src/lib/evolution/governed-hub-llm.js +238 -5
  199. package/src/lib/evolution/governed-hub-resolver.js +82 -4
  200. package/src/lib/evolution/governed-hub-skill.js +11 -5
  201. package/src/lib/evolution/governed-skill-synthesis-provider-chat.js +10 -1
  202. package/src/lib/evolution/skill-runtime-revalidation-ledger-adapter.js +254 -0
  203. package/src/lib/evolution/skill-runtime-revalidation.js +530 -0
  204. package/src/lib/evolution/skill-target-matrix-eval.js +4 -4
  205. package/src/lib/evolution/wiki-evidence-commit-guard.js +366 -0
  206. package/src/lib/evolution/wiki-informed-skill-proposer.js +13 -1
  207. package/src/lib/goal-context.js +14 -5
  208. package/src/lib/interaction-adapter.js +166 -1
  209. package/src/lib/model-capabilities.js +271 -0
  210. package/src/lib/model-context-catalog.js +105 -0
  211. package/src/lib/model-context-window.js +4 -49
  212. package/src/lib/openai-responses.js +428 -0
  213. package/src/lib/plugin-runtime/scopes.js +7 -1
  214. package/src/lib/remote-read-loop-guard.js +2 -2
  215. package/src/lib/runtime-usage-ledger.js +16 -0
  216. package/src/lib/session-host-snapshot.js +16 -0
  217. package/src/lib/skill-loader.js +12 -0
  218. package/src/lib/with-file-lock.js +3 -1
  219. package/src/repl/agent-repl.js +5 -1
  220. package/src/runtime/agent-core.js +348 -23
  221. package/src/runtime/agent-runtime.js +7 -0
  222. package/src/runtime/coding-agent-contract-shared.cjs +13 -1
  223. package/src/runtime/headless-runner.js +4 -1
  224. package/src/runtime/headless-stream.js +283 -45
  225. package/src/runtime/runtime-factory.js +26 -2
  226. package/src/workers/background-agent-keeper.js +23 -13
  227. package/src/workers/background-agent-worker.js +27 -13
  228. package/src/assets/web-panel/assets/ChatBubbleRenderer-Bi2SY9E_.js +0 -1
  229. package/src/assets/web-panel/assets/PdhVaultBrowser-fYmQzmTA.js +0 -7
  230. package/src/assets/web-panel/assets/devWarning-BtFLt3qI.js +0 -1
  231. package/src/assets/web-panel/assets/index-BhuWQHeG.js +0 -1
  232. package/src/assets/web-panel/assets/index-D-4tFek3.js +0 -1
@@ -11,6 +11,8 @@ export const EVOLUTION_LEDGER_MANIFEST_CHAIN_SCHEMA =
11
11
  "chainlesschain.evolution-ledger-manifest-chain/v2";
12
12
  export const EVOLUTION_LEDGER_SEGMENT_PAYLOAD_SCHEMA =
13
13
  "chainlesschain.evolution-ledger-segment-payload/v2";
14
+ export const EVOLUTION_LEDGER_EVENT_PAYLOAD_SCHEMA =
15
+ "chainlesschain.evolution-ledger-event-payload/v2";
14
16
  export const EVOLUTION_LEDGER_SEGMENT_MANIFEST_SCHEMA =
15
17
  "chainlesschain.evolution-ledger-segment-manifest/v2";
16
18
  export const EVOLUTION_LEDGER_MANIFEST_HEAD_SCHEMA =
@@ -336,8 +338,163 @@ function payload(sequenceStart, eventDigests) {
336
338
  });
337
339
  }
338
340
 
341
+ // Snapshot only bounded canonical JSON. Do not invoke getters, toJSON or Proxy
342
+ // traps while capturing signed event bytes supplied to the storage boundary.
343
+ function snapshotEvent(
344
+ value,
345
+ depth = 0,
346
+ seen = new Set(),
347
+ budget = { bytes: 64 * 1024 * 1024, nodes: 1_000_000 },
348
+ ) {
349
+ rejectProxy(value, "event payload");
350
+ budget.bytes -=
351
+ typeof value === "string" ? Buffer.byteLength(value, "utf8") : 8;
352
+ if (--budget.nodes < 0 || budget.bytes < 0)
353
+ throw failure(
354
+ EVOLUTION_LEDGER_MANIFEST_INVALID_CODE,
355
+ "event payload exceeds bounded capacity",
356
+ );
357
+ if (depth > 32 || seen.has(value))
358
+ throw failure(
359
+ EVOLUTION_LEDGER_MANIFEST_INVALID_CODE,
360
+ "event payload is cyclic or too deep",
361
+ );
362
+ if (value === null || typeof value === "string" || typeof value === "boolean")
363
+ return value;
364
+ if (typeof value === "number" && Number.isFinite(value)) return value;
365
+ if (
366
+ !value ||
367
+ typeof value !== "object" ||
368
+ ![Array.isArray(value) ? Array.prototype : Object.prototype, null].includes(
369
+ Object.getPrototypeOf(value),
370
+ )
371
+ )
372
+ throw failure(
373
+ EVOLUTION_LEDGER_MANIFEST_INVALID_CODE,
374
+ "event payload must be JSON data",
375
+ );
376
+ seen.add(value);
377
+ const array = Array.isArray(value);
378
+ const result = array ? [] : Object.create(null);
379
+ const keys = Reflect.ownKeys(value).filter(
380
+ (key) => !(array && key === "length"),
381
+ );
382
+ if (array && keys.length !== value.length)
383
+ throw failure(
384
+ EVOLUTION_LEDGER_MANIFEST_INVALID_CODE,
385
+ "event payload array must be dense",
386
+ );
387
+ for (const key of keys) {
388
+ const property = Object.getOwnPropertyDescriptor(value, key);
389
+ if (
390
+ typeof key !== "string" ||
391
+ !property.enumerable ||
392
+ !("value" in property) ||
393
+ (array &&
394
+ (!/^(0|[1-9][0-9]*)$/u.test(key) || Number(key) >= value.length))
395
+ )
396
+ throw failure(
397
+ EVOLUTION_LEDGER_MANIFEST_INVALID_CODE,
398
+ "event payload must contain own data properties",
399
+ );
400
+ budget.bytes -= Buffer.byteLength(key, "utf8");
401
+ result[key] = snapshotEvent(property.value, depth + 1, seen, budget);
402
+ }
403
+ seen.delete(value);
404
+ return Object.freeze(result);
405
+ }
406
+
407
+ function eventPayload(sequenceStart, input, expected = {}) {
408
+ rejectProxy(input, "event payload");
409
+ if (
410
+ !Array.isArray(input) ||
411
+ input.length < 1 ||
412
+ input.length > MAX_EVENTS_PER_SEGMENT
413
+ )
414
+ throw failure(
415
+ EVOLUTION_LEDGER_MANIFEST_INVALID_CODE,
416
+ "event payload count is invalid",
417
+ );
418
+ const events = snapshotEvent(input);
419
+ if (
420
+ !Array.isArray(events) ||
421
+ events.length < 1 ||
422
+ events.length > MAX_EVENTS_PER_SEGMENT
423
+ )
424
+ throw failure(
425
+ EVOLUTION_LEDGER_MANIFEST_INVALID_CODE,
426
+ "event payload count is invalid",
427
+ );
428
+ let previous = expected.previousDigest;
429
+ for (const [index, event] of events.entries()) {
430
+ if (
431
+ !event ||
432
+ ![
433
+ "chainlesschain.evolution-event/v2",
434
+ "chainlesschain.evolution-domain-event/v1",
435
+ ].includes(event.schema)
436
+ )
437
+ throw failure(
438
+ EVOLUTION_LEDGER_MANIFEST_CORRUPT_CODE,
439
+ "event payload schema is invalid",
440
+ );
441
+ const { eventDigest, signature, ...core } = event;
442
+ const signatureFields = exactRecord(
443
+ signature,
444
+ new Set(["algorithm", "keyId", "trustPolicyDigest", "value"]),
445
+ "event payload signature",
446
+ EVOLUTION_LEDGER_MANIFEST_CORRUPT_CODE,
447
+ );
448
+ if (
449
+ ["algorithm", "keyId", "trustPolicyDigest"].some(
450
+ (field) => data(signatureFields, field) !== event[field],
451
+ ) ||
452
+ typeof signature.value !== "string" ||
453
+ signature.value.length < 1 ||
454
+ signature.value.length > 16_384
455
+ )
456
+ throw failure(
457
+ EVOLUTION_LEDGER_MANIFEST_CORRUPT_CODE,
458
+ "event signature binding differs",
459
+ );
460
+ if (
461
+ !signature ||
462
+ event.sequence !== sequenceStart + index ||
463
+ eventDigest !==
464
+ sha256(Buffer.from(`${event.schema}\0${canonical(core)}`, "utf8")) ||
465
+ (previous !== undefined && event.prevDigest !== previous) ||
466
+ (expected.epoch !== undefined && event.epoch !== expected.epoch) ||
467
+ (expected.ledgerId !== undefined &&
468
+ event.ledgerId !== expected.ledgerId) ||
469
+ (expected.tenantId !== undefined && event.tenantId !== expected.tenantId)
470
+ )
471
+ throw failure(
472
+ EVOLUTION_LEDGER_MANIFEST_CORRUPT_CODE,
473
+ "event payload digest, sequence or scope is invalid",
474
+ );
475
+ if (Buffer.byteLength(canonical(event), "utf8") > 1024 * 1024)
476
+ throw failure(
477
+ EVOLUTION_LEDGER_MANIFEST_INVALID_CODE,
478
+ "event payload exceeds the event byte limit",
479
+ );
480
+ previous = eventDigest;
481
+ }
482
+ return Object.freeze({
483
+ events,
484
+ schema: EVOLUTION_LEDGER_EVENT_PAYLOAD_SCHEMA,
485
+ sequenceStart,
486
+ sequenceEnd: sequenceStart + events.length - 1,
487
+ });
488
+ }
489
+
339
490
  function payloadBytes(value) {
340
- return Buffer.from(canonical(value), "utf8");
491
+ const bytes = Buffer.from(canonical(value), "utf8");
492
+ if (bytes.length > 64 * 1024 * 1024)
493
+ throw failure(
494
+ EVOLUTION_LEDGER_MANIFEST_INVALID_CODE,
495
+ "event segment exceeds byte capacity",
496
+ );
497
+ return bytes;
341
498
  }
342
499
 
343
500
  function parsePayload(bytes, expected) {
@@ -356,6 +513,28 @@ function parsePayload(bytes, expected) {
356
513
  "manifest segment payload is not JSON",
357
514
  );
358
515
  }
516
+ if (raw.schema === EVOLUTION_LEDGER_EVENT_PAYLOAD_SCHEMA) {
517
+ exactRecord(
518
+ raw,
519
+ new Set(["events", "schema", "sequenceStart", "sequenceEnd"]),
520
+ "event segment payload",
521
+ );
522
+ const parsed = eventPayload(expected.sequenceStart, raw.events, expected);
523
+ if (
524
+ !payloadBytes(parsed).equals(bytes) ||
525
+ raw.sequenceEnd !== expected.sequenceEnd
526
+ )
527
+ throw failure(
528
+ EVOLUTION_LEDGER_MANIFEST_CORRUPT_CODE,
529
+ "event segment payload range differs",
530
+ );
531
+ return Object.freeze({
532
+ ...parsed,
533
+ eventDigests: Object.freeze(
534
+ parsed.events.map((event) => event.eventDigest),
535
+ ),
536
+ });
537
+ }
359
538
  const fields = exactRecord(
360
539
  raw,
361
540
  PAYLOAD_KEYS,
@@ -798,9 +977,17 @@ export function captureEvolutionLedgerManifestAuthority(value) {
798
977
  }
799
978
 
800
979
  export function sealEvolutionLedgerManifestSegment(options = undefined) {
980
+ const fullEvents =
981
+ options && !utilTypes.isProxy(options) && Object.hasOwn(options, "events");
801
982
  const fields = exactRecord(
802
983
  options,
803
- SEAL_CONFIG_KEYS,
984
+ fullEvents
985
+ ? new Set(
986
+ [...SEAL_CONFIG_KEYS]
987
+ .filter((key) => key !== "eventDigests")
988
+ .concat("events"),
989
+ )
990
+ : SEAL_CONFIG_KEYS,
804
991
  "manifest segment seal configuration",
805
992
  );
806
993
  const descriptorValue = descriptor(data(fields, "descriptor"));
@@ -818,8 +1005,17 @@ export function sealEvolutionLedgerManifestSegment(options = undefined) {
818
1005
  descriptorValue,
819
1006
  authority,
820
1007
  );
1008
+ const sequenceStart = (previous?.sequence || 0) + 1;
1009
+ const fullPayload = fullEvents
1010
+ ? eventPayload(sequenceStart, data(fields, "events"), {
1011
+ ...descriptorValue,
1012
+ previousDigest: previous?.eventDigest ?? null,
1013
+ })
1014
+ : null;
821
1015
  const eventDigests = normalizeDigests(
822
- data(fields, "eventDigests"),
1016
+ fullPayload
1017
+ ? fullPayload.events.map((event) => event.eventDigest)
1018
+ : data(fields, "eventDigests"),
823
1019
  "eventDigests",
824
1020
  descriptorValue.maximumEventsPerSegment,
825
1021
  );
@@ -841,8 +1037,7 @@ export function sealEvolutionLedgerManifestSegment(options = undefined) {
841
1037
  new Date(nowMs).toISOString(),
842
1038
  "manifest issuedAt",
843
1039
  ).value;
844
- const sequenceStart = (previous?.sequence || 0) + 1;
845
- const segmentPayload = payload(sequenceStart, eventDigests);
1040
+ const segmentPayload = fullPayload ?? payload(sequenceStart, eventDigests);
846
1041
  let receipt;
847
1042
  try {
848
1043
  receipt = store.retain({
@@ -958,7 +1153,7 @@ export function verifyEvolutionLedgerSegmentManifest(options = undefined) {
958
1153
  );
959
1154
  }
960
1155
 
961
- export function verifyEvolutionLedgerManifestChain(options = undefined) {
1156
+ function verifyChain(options, includeEvents) {
962
1157
  const fields = exactRecord(
963
1158
  options,
964
1159
  VERIFY_CONFIG_KEYS,
@@ -987,6 +1182,7 @@ export function verifyEvolutionLedgerManifestChain(options = undefined) {
987
1182
  );
988
1183
  }
989
1184
  let previous = null;
1185
+ const events = [];
990
1186
  for (const rawManifest of manifests) {
991
1187
  const manifest = normalizeManifest(rawManifest, descriptorValue, authority);
992
1188
  if (
@@ -1023,7 +1219,18 @@ export function verifyEvolutionLedgerManifestChain(options = undefined) {
1023
1219
  "manifest segment resolution is not authenticated immutable storage",
1024
1220
  );
1025
1221
  }
1026
- const parsed = parsePayload(resolution.bytes, manifest);
1222
+ const parsed = parsePayload(resolution.bytes, {
1223
+ ...manifest,
1224
+ previousDigest: previous?.eventDigests.at(-1) ?? null,
1225
+ });
1226
+ if (includeEvents) {
1227
+ if (!parsed.events)
1228
+ throw failure(
1229
+ EVOLUTION_LEDGER_MANIFEST_CORRUPT_CODE,
1230
+ "digest-only segments cannot recover event payloads",
1231
+ );
1232
+ events.push(...parsed.events);
1233
+ }
1027
1234
  if (canonical(parsed.eventDigests) !== canonical(manifest.eventDigests)) {
1028
1235
  throw failure(
1029
1236
  EVOLUTION_LEDGER_MANIFEST_CORRUPT_CODE,
@@ -1049,5 +1256,14 @@ export function verifyEvolutionLedgerManifestChain(options = undefined) {
1049
1256
  head,
1050
1257
  manifestCount: manifests.length,
1051
1258
  sequence: head.sequence,
1259
+ ...(includeEvents ? { events: Object.freeze(events) } : {}),
1052
1260
  });
1053
1261
  }
1262
+
1263
+ export function verifyEvolutionLedgerManifestChain(options = undefined) {
1264
+ return verifyChain(options, false);
1265
+ }
1266
+
1267
+ export function readEvolutionLedgerManifestEvents(options = undefined) {
1268
+ return verifyChain(options, true);
1269
+ }