chainlesschain 0.166.10 → 0.166.13

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 (230) hide show
  1. package/README.md +33 -0
  2. package/bin/chainlesschain.js +5 -0
  3. package/package.json +4 -2
  4. package/src/assets/web-panel/assets/{AIOps-CLYBDAGv.js → AIOps-BN25cNOD.js} +1 -1
  5. package/src/assets/web-panel/assets/{ActionButton-CpeSttcu.js → ActionButton-Da9IP-m5.js} +1 -1
  6. package/src/assets/web-panel/assets/{Analytics-Ba1TNLG0.js → Analytics-D7hkEvQm.js} +3 -3
  7. package/src/assets/web-panel/assets/{AppLayout-xBy8EOeg.js → AppLayout-CCV4Xnbc.js} +5 -5
  8. package/src/assets/web-panel/assets/{Artifacts-CJ_3TFb8.js → Artifacts-CVSnVJeA.js} +1 -1
  9. package/src/assets/web-panel/assets/{Audit-DUATFCG3.js → Audit-CuYdw5Ag.js} +1 -1
  10. package/src/assets/web-panel/assets/{BackgroundAgents-BRXYPIGp.js → BackgroundAgents-DZCnK-Tf.js} +1 -1
  11. package/src/assets/web-panel/assets/{Backup-D8auLx7y.js → Backup-cV9FdpTy.js} +1 -1
  12. package/src/assets/web-panel/assets/{BaseInput-CBgdslQ3.js → BaseInput-BRnv6YSp.js} +1 -1
  13. package/src/assets/web-panel/assets/{Chat-B32LvAiE.js → Chat-Bw5w87P4.js} +5 -5
  14. package/src/assets/web-panel/assets/{ChatBubbleRenderer-CVfvAy-n.js → ChatBubbleRenderer-C0GjtUAw.js} +1 -1
  15. package/src/assets/web-panel/assets/{Checkbox-BwzBxOpC.js → Checkbox-DaoTqcdt.js} +1 -1
  16. package/src/assets/web-panel/assets/{Codegen-0U5vrg1H.js → Codegen-B4dYcEIi.js} +1 -1
  17. package/src/assets/web-panel/assets/{Col-dZ2i4aAj.js → Col-mAhuOeuD.js} +1 -1
  18. package/src/assets/web-panel/assets/{Community-UVvpLr8c.js → Community-BK6KEdBk.js} +1 -1
  19. package/src/assets/web-panel/assets/{Compact-BDNEb1Bd.js → Compact-CCglmNu5.js} +1 -1
  20. package/src/assets/web-panel/assets/{Compliance-BrzQPxyS.js → Compliance-Cm8S4of7.js} +1 -1
  21. package/src/assets/web-panel/assets/{Cowork-BbgGsu-9.js → Cowork-Dhs1QLMe.js} +2 -2
  22. package/src/assets/web-panel/assets/{Cron-G321XPhp.js → Cron-CLlhmXWk.js} +2 -2
  23. package/src/assets/web-panel/assets/{Crosschain-CgLNUyMn.js → Crosschain-BnHVbaNs.js} +1 -1
  24. package/src/assets/web-panel/assets/{DID-BAfRj18q.js → DID-UzQP9-0O.js} +2 -2
  25. package/src/assets/web-panel/assets/{Dashboard-BNIxA4TK.js → Dashboard-CBdlPClz.js} +2 -2
  26. package/src/assets/web-panel/assets/{Dropdown-BLAUmCAN.js → Dropdown-axIRPdq1.js} +1 -1
  27. package/src/assets/web-panel/assets/{EmailListRenderer-CsnhTW22.js → EmailListRenderer-DUalW5rx.js} +1 -1
  28. package/src/assets/web-panel/assets/{FamilyGuardDashboard-zcQ7Ip1n.js → FamilyGuardDashboard-Bl4W9luY.js} +1 -1
  29. package/src/assets/web-panel/assets/{Federation-KFwxodNU.js → Federation-C1yP-uEu.js} +1 -1
  30. package/src/assets/web-panel/assets/{FormItemContext-3CYRLEHG.js → FormItemContext-Xh6Ig5q8.js} +1 -1
  31. package/src/assets/web-panel/assets/{GenericCardRenderer-D3d9D8L9.js → GenericCardRenderer-C2cz3bt2.js} +1 -1
  32. package/src/assets/web-panel/assets/{Git-BJ202nJY.js → Git-C_z63ixg.js} +2 -2
  33. package/src/assets/web-panel/assets/{Governance-ClnnXVQ-.js → Governance-BYqB33_3.js} +1 -1
  34. package/src/assets/web-panel/assets/{Inference-DNU-PTkc.js → Inference-CEULuArm.js} +1 -1
  35. package/src/assets/web-panel/assets/{KnowledgeGraph-DJuinbuY.js → KnowledgeGraph-fgMsu-0H.js} +1 -1
  36. package/src/assets/web-panel/assets/{Logs-D4No-46s.js → Logs-DO9Hdcec.js} +2 -2
  37. package/src/assets/web-panel/assets/MarkdownRenderer-BkrK04xW.js +1 -0
  38. package/src/assets/web-panel/assets/{Marketplace-Ba-KqRN3.js → Marketplace-B8zyLiFe.js} +1 -1
  39. package/src/assets/web-panel/assets/{McpTools-DVoxnPgE.js → McpTools-BLAN2mWW.js} +3 -3
  40. package/src/assets/web-panel/assets/{Memory-D_C8gzAZ.js → Memory-CrQcFM7u.js} +2 -2
  41. package/src/assets/web-panel/assets/{MobileBridge-DnzTPcDH.js → MobileBridge-DVnyiiU-.js} +1 -1
  42. package/src/assets/web-panel/assets/MobileProjects-qjCME5OD.js +1 -0
  43. package/src/assets/web-panel/assets/{Mtc-CvEHmHId.js → Mtc-4JE3C3It.js} +2 -2
  44. package/src/assets/web-panel/assets/{MtcAudit-VNJmWqmv.js → MtcAudit-CjBuak9I.js} +5 -5
  45. package/src/assets/web-panel/assets/{Multisig-BO0x_Vsa.js → Multisig-BtPcYQcC.js} +3 -3
  46. package/src/assets/web-panel/assets/{NLProgramming-CM2gI1UY.js → NLProgramming-Cx653_Ba.js} +1 -1
  47. package/src/assets/web-panel/assets/{Notes-CMc1HsML.js → Notes-CkuD3YzS.js} +3 -3
  48. package/src/assets/web-panel/assets/{NotificationSettings-DGNmSKGM.js → NotificationSettings-BgNgU7HH.js} +1 -1
  49. package/src/assets/web-panel/assets/{OrderTableRenderer-Du-Kct3p.js → OrderTableRenderer-BTC8W0a-.js} +1 -1
  50. package/src/assets/web-panel/assets/{Organization-DRtRZjas.js → Organization-Dmd4Hjxz.js} +4 -4
  51. package/src/assets/web-panel/assets/{Overflow-Dp4OeWsn.js → Overflow-C_5DA-G0.js} +1 -1
  52. package/src/assets/web-panel/assets/{P2P-DXMJVls8.js → P2P-uwslV4XC.js} +2 -2
  53. package/src/assets/web-panel/assets/PdhVaultBrowser-CuNgwVnX.js +7 -0
  54. package/src/assets/web-panel/assets/{Permissions-D1Hbb51o.js → Permissions-CJayVX9H.js} +4 -4
  55. package/src/assets/web-panel/assets/{PersonalDataHub-BridiDhr.js → PersonalDataHub-Cb05H5go.js} +4 -4
  56. package/src/assets/web-panel/assets/{Pipeline-B4bUNCm1.js → Pipeline-BZlGKapZ.js} +1 -1
  57. package/src/assets/web-panel/assets/{Privacy-BTu_HEqK.js → Privacy-BIzZWYzd.js} +1 -1
  58. package/src/assets/web-panel/assets/{ProjectInit-SVtL2hnt.js → ProjectInit-vEYYyQXQ.js} +2 -2
  59. package/src/assets/web-panel/assets/{ProjectSettings-B2Sh7JZ2.js → ProjectSettings-MZqTy5CC.js} +2 -2
  60. package/src/assets/web-panel/assets/{Projects-BwU1xalW.js → Projects-CRARUOl8.js} +1 -1
  61. package/src/assets/web-panel/assets/{Providers-BWdWQSDw.js → Providers-80VAK8PX.js} +1 -1
  62. package/src/assets/web-panel/assets/{QrScannerModal-Brzc-Sxb.js → QrScannerModal-CzRSoIwK.js} +1 -1
  63. package/src/assets/web-panel/assets/{QuickAsk-DIBz7FCe.js → QuickAsk-BpwQ2n4C.js} +1 -1
  64. package/src/assets/web-panel/assets/{Recommend-CZ8RriIJ.js → Recommend-BC03TZ79.js} +1 -1
  65. package/src/assets/web-panel/assets/{RemoteSession-CM0KJQ3t.js → RemoteSession-DE59-jaa.js} +2 -2
  66. package/src/assets/web-panel/assets/{Reputation-D_wo8H0O.js → Reputation-DOHmeWyA.js} +1 -1
  67. package/src/assets/web-panel/assets/{Row-D1G1fD7N.js → Row-hc5RZl1D.js} +1 -1
  68. package/src/assets/web-panel/assets/{RssFeed-dKCVtA0K.js → RssFeed-Cv5uMP7E.js} +3 -3
  69. package/src/assets/web-panel/assets/{Search-Be1D61xo.js → Search-qohu7Ug0.js} +1 -1
  70. package/src/assets/web-panel/assets/{Security-IbNiR6OC.js → Security-drCPFWV5.js} +4 -4
  71. package/src/assets/web-panel/assets/{Services-nuHK8y8p.js → Services-BAEgUeRy.js} +2 -2
  72. package/src/assets/web-panel/assets/{Skeleton-DnM5jdnC.js → Skeleton-CkJkKBlo.js} +1 -1
  73. package/src/assets/web-panel/assets/{Skills-DCTdoq_q.js → Skills-bMuKEpez.js} +1 -1
  74. package/src/assets/web-panel/assets/{Sla-DlWun-Ui.js → Sla-DxWQVHRC.js} +1 -1
  75. package/src/assets/web-panel/assets/{SpeechSettings-C19kv2sd.js → SpeechSettings-BpS8idmV.js} +1 -1
  76. package/src/assets/web-panel/assets/{SyncSettings-CkQIR_Hu.js → SyncSettings-BPBLlW5v.js} +2 -2
  77. package/src/assets/web-panel/assets/{Tasks-DdbqOEbs.js → Tasks-C4SLEeUh.js} +1 -1
  78. package/src/assets/web-panel/assets/{Templates-B7GpIXeo.js → Templates-r-wfU39U.js} +1 -1
  79. package/src/assets/web-panel/assets/{Tenant-ByEstFhY.js → Tenant-C7vjRmLN.js} +1 -1
  80. package/src/assets/web-panel/assets/{Terminal-BKRVID1a.js → Terminal-DdzeFCV2.js} +2 -2
  81. package/src/assets/web-panel/assets/{TimelineRenderer-CNS3dHNv.js → TimelineRenderer-CYyWN2KD.js} +1 -1
  82. package/src/assets/web-panel/assets/{Tokens-BykqylCL.js → Tokens-D8A9osUg.js} +1 -1
  83. package/src/assets/web-panel/assets/{Trigger-ByNxq51W.js → Trigger-DBvrNlyS.js} +1 -1
  84. package/src/assets/web-panel/assets/{Trust-BlrFsdaS.js → Trust-DBVAGc7o.js} +1 -1
  85. package/src/assets/web-panel/assets/{UkeySign-Dg26A-sd.js → UkeySign-C1vQUCRJ.js} +1 -1
  86. package/src/assets/web-panel/assets/{VideoEditing-C1wUxNn0.js → VideoEditing-BKs4dah4.js} +1 -1
  87. package/src/assets/web-panel/assets/{Wallet-OphEUzI4.js → Wallet-ByIuj3lD.js} +4 -4
  88. package/src/assets/web-panel/assets/{WebAuthn-_8lL08hF.js → WebAuthn-DYlAFCm9.js} +3 -3
  89. package/src/assets/web-panel/assets/{WorkflowEditor-BnTuIvnP.js → WorkflowEditor-Dwyadd0c.js} +1 -1
  90. package/src/assets/web-panel/assets/{chat-3N3VLQYr.js → chat-Bm2f3s08.js} +1 -1
  91. package/src/assets/web-panel/assets/{colors-Bo_G96gg.js → colors-C8ORSh7V.js} +1 -1
  92. package/src/assets/web-panel/assets/{compact-item-DjubfjI_.js → compact-item-1iVlnsM-.js} +1 -1
  93. package/src/assets/web-panel/assets/{createContext-Cx_HSLCk.js → createContext-CmqNyUSL.js} +1 -1
  94. package/src/assets/web-panel/assets/devWarning-B69RCDDH.js +1 -0
  95. package/src/assets/web-panel/assets/{hasIn-D5OjAOlA.js → hasIn-rUMaX3Ul.js} +1 -1
  96. package/src/assets/web-panel/assets/index-9biMQ-tw.js +1 -0
  97. package/src/assets/web-panel/assets/{index-Bj7S5IJw.js → index-B53c3diB.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-C-_Cy0k_.js → index-B59OWAs7.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-DaU60K3A.js → index-B8BrB0Ls.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-UnpsQ6A0.js → index-BC32_0xT.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-BScGr1BY.js → index-BC8Wb6cy.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-CC7RnaPP.js → index-BCOhTILd.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-DXJqa1-I.js → index-BFniLMn9.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-C-4sfa0l.js → index-BIvM-uAX.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-C8dPFFhy.js → index-BK-RY0-7.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-CVPDhmVH.js → index-BQL9r73Y.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-CqZq3zWr.js → index-BVtnizyC.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-C5IwN9q3.js → index-Bf1PlIHp.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-Cz5tQ5PY.js → index-Bgw4Y2rU.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-CmLwI-Y8.js → index-BgwLNxmr.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-Y-H7j25u.js → index-C-J5-pGH.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-ydnEPOzZ.js → index-C-ZIHi42.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-HioDjvUF.js → index-C3B1S-mW.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-CRKk1JPX.js → index-C5RfRciU.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-x7o-2T3S.js → index-CCEyz58d.js} +1 -1
  116. package/src/assets/web-panel/assets/index-COie87kl.js +1 -0
  117. package/src/assets/web-panel/assets/{index-BvYo09C0.js → index-CTfEmKK0.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-CCjq3g32.js → index-CfiHyVyl.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-3_CEBEEf.js → index-CkFvuAex.js} +3 -3
  120. package/src/assets/web-panel/assets/{index-EZr3bvz2.js → index-D98FXb0w.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-C4MAnkl5.js → index-DDHk911Q.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-BgPb37tI.js → index-DJxtPFOh.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-CNmsP0Xf.js → index-DVJ1uKf4.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-DBvZhdCb.js → index-Dcck8QfW.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-B905-Mcs.js → index-DgUE51Pz.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-DrVjatPe.js → index-Dsve5Gkv.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-uAcJUJkx.js → index-DvedhJeM.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-DD1zSPZH.js → index-DwMdWKiF.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-BxgIE4PD.js → index-OcbzdRpT.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-Ce8EWU6r.js → index-fPK6GFEg.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-DlcbE0sX.js → index-geQinnns.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-Dbdr8tVi.js → index-pHWA7bmM.js} +1 -1
  133. package/src/assets/web-panel/assets/{index-DE4XtzMl.js → index-reUHhuz8.js} +1 -1
  134. package/src/assets/web-panel/assets/{index-Q_vn0t8d.js → index-tqTx5wXo.js} +1 -1
  135. package/src/assets/web-panel/assets/{initDefaultProps-DurpENJY.js → initDefaultProps-CuA-cpkL.js} +1 -1
  136. package/src/assets/web-panel/assets/{motion-CIh-z-gR.js → motion-CimmE_9b.js} +1 -1
  137. package/src/assets/web-panel/assets/{move-Uc_yI2NA.js → move-DlGlrltz.js} +1 -1
  138. package/src/assets/web-panel/assets/{mtc-parser-DUevj5wz.js → mtc-parser-CK6BJQ07.js} +1 -1
  139. package/src/assets/web-panel/assets/{omit-85eMYyur.js → omit-BKjBfZfB.js} +1 -1
  140. package/src/assets/web-panel/assets/{pickAttrs-AuxDD20F.js → pickAttrs-B2chVYw9.js} +1 -1
  141. package/src/assets/web-panel/assets/{placementArrow-DOWn8dd1.js → placementArrow-BW8aLJJ3.js} +1 -1
  142. package/src/assets/web-panel/assets/{responsiveObserve-CPxTWodH.js → responsiveObserve-dXlPl66S.js} +1 -1
  143. package/src/assets/web-panel/assets/{slide-BqvbGPjx.js → slide-hSa89S4G.js} +1 -1
  144. package/src/assets/web-panel/assets/{statusUtils-BzXKkV8d.js → statusUtils-DM6KLt-s.js} +1 -1
  145. package/src/assets/web-panel/assets/{styleChecker-B2O7yRk3.js → styleChecker-C9MQAK15.js} +1 -1
  146. package/src/assets/web-panel/assets/{useFlexGapSupport-DRWp7px1.js → useFlexGapSupport-BpQDpP0z.js} +1 -1
  147. package/src/assets/web-panel/assets/{useFs-Dp0V7sjM.js → useFs-C7rtRViA.js} +1 -1
  148. package/src/assets/web-panel/assets/{usePersonalDataHub-CyCrG3ql.js → usePersonalDataHub-Dm15xafq.js} +1 -1
  149. package/src/assets/web-panel/assets/{vnode-CXhoFpFo.js → vnode-mEiEytw4.js} +1 -1
  150. package/src/assets/web-panel/assets/{zoom-0z3mtwEg.js → zoom-DzPxflhY.js} +1 -1
  151. package/src/assets/web-panel/index.html +1 -1
  152. package/src/command-help-index.json +5 -5
  153. package/src/commands/agent.js +51 -20
  154. package/src/commands/compact.js +349 -3
  155. package/src/commands/context.js +72 -1
  156. package/src/commands/graph.js +26 -15
  157. package/src/commands/hmemory.js +21 -0
  158. package/src/commands/hook.js +256 -28
  159. package/src/commands/memory.js +209 -42
  160. package/src/commands/promcomp.js +17 -0
  161. package/src/commands/serve.js +94 -10
  162. package/src/commands/session.js +2 -3
  163. package/src/commands/team.js +7 -1
  164. package/src/data/changelog.json +28 -2
  165. package/src/gateways/ws/session-core-protocol.js +62 -3
  166. package/src/gateways/ws/session-protocol.js +123 -15
  167. package/src/gateways/ws/ws-agent-handler.js +157 -9
  168. package/src/gateways/ws/ws-session-gateway.js +204 -30
  169. package/src/generated/cc-agent-protocol.schema.json +2094 -4
  170. package/src/harness/prompt-compressor.js +5 -55
  171. package/src/lib/agent-sandbox.js +14 -4
  172. package/src/lib/agent-team/team-distributed-graph-bridge.js +3 -3
  173. package/src/lib/app-server/context-memory-notifications.js +54 -0
  174. package/src/lib/app-server/rollout-store-factory.js +115 -0
  175. package/src/lib/app-server/rollout-store.js +310 -23
  176. package/src/lib/app-server/server.js +184 -7
  177. package/src/lib/app-server/sqlite-rollout-store.js +59 -16
  178. package/src/lib/auto-mode-config.js +26 -0
  179. package/src/lib/causal-observability.js +13 -1
  180. package/src/lib/context-memory-kernel/authority.js +95 -0
  181. package/src/lib/context-memory-kernel/durable-memory-port.js +296 -0
  182. package/src/lib/context-memory-kernel/index.js +8 -0
  183. package/src/lib/context-memory-kernel/jsonl-session-context-port.js +232 -0
  184. package/src/lib/context-memory-kernel/live-compaction.js +375 -0
  185. package/src/lib/context-memory-kernel/memory-service.js +667 -0
  186. package/src/lib/context-memory-kernel/message-adapter.js +451 -0
  187. package/src/lib/context-memory-kernel/privacy-purge-port.js +244 -0
  188. package/src/lib/context-memory-kernel/provider-context.js +192 -0
  189. package/src/lib/context-memory-kernel/runtime.js +61 -0
  190. package/src/lib/direct-model-usage.js +22 -18
  191. package/src/lib/graph-kernel/cutover-authority-resolver.js +4 -5
  192. package/src/lib/graph-kernel/cutover-ledger.js +2 -2
  193. package/src/lib/graph-kernel/event-store.js +3 -5
  194. package/src/lib/graph-kernel/migration-saga.js +2 -2
  195. package/src/lib/graph-kernel/production-cutover-evidence.js +8 -1
  196. package/src/lib/hierarchical-memory.js +22 -0
  197. package/src/lib/hook-audit-store.js +170 -0
  198. package/src/lib/hook-event-bus.cjs +0 -0
  199. package/src/lib/hook-manager.js +25 -83
  200. package/src/lib/hook-runtime-adapters.js +233 -0
  201. package/src/lib/hook-runtime-contract.cjs +291 -0
  202. package/src/lib/hook-runtime-contract.js +21 -0
  203. package/src/lib/hook-trust.js +210 -0
  204. package/src/lib/hooks-v2-producers.js +52 -6
  205. package/src/lib/hooks-v2-runtime.js +443 -178
  206. package/src/lib/llm-pricing.js +10 -0
  207. package/src/lib/memory-manager.js +29 -4
  208. package/src/lib/model-context-window.js +52 -0
  209. package/src/lib/permanent-memory.js +17 -0
  210. package/src/lib/plan-mode.js +8 -4
  211. package/src/lib/process-execution-broker/index.js +208 -16
  212. package/src/lib/runtime-usage-ledger.js +20 -0
  213. package/src/lib/session-consolidator.js +59 -0
  214. package/src/lib/session-core-singletons.js +17 -4
  215. package/src/lib/session-hooks.js +29 -2
  216. package/src/lib/session-transcript-migration.js +188 -0
  217. package/src/lib/settings-hook-events.cjs +37 -401
  218. package/src/lib/settings-hook-events.js +210 -8
  219. package/src/lib/settings-hooks.cjs +42 -83
  220. package/src/lib/ws-session-manager.js +4 -1
  221. package/src/repl/agent-repl.js +186 -53
  222. package/src/runtime/agent-core.js +376 -350
  223. package/src/runtime/headless-runner.js +40 -33
  224. package/src/runtime/headless-stream.js +131 -30
  225. package/src/assets/web-panel/assets/MarkdownRenderer-Dt8hH_qA.js +0 -1
  226. package/src/assets/web-panel/assets/MobileProjects-Jg2dVUc-.js +0 -1
  227. package/src/assets/web-panel/assets/PdhVaultBrowser-0jYeVmyY.js +0 -7
  228. package/src/assets/web-panel/assets/devWarning-BX944k9E.js +0 -1
  229. package/src/assets/web-panel/assets/index-C_9Jt_SR.js +0 -1
  230. package/src/assets/web-panel/assets/index-DL2EFx7m.js +0 -1
@@ -22,7 +22,7 @@ import chalk from "chalk";
22
22
  import fs from "fs";
23
23
  import os from "os";
24
24
  import path from "path";
25
- import { randomUUID } from "node:crypto";
25
+ import { createHash, randomUUID } from "node:crypto";
26
26
  import { isPromise, isProxy } from "node:util/types";
27
27
  import { logger } from "../lib/logger.js";
28
28
  import { captureAmbientExecutionLocation } from "../lib/execution-location-runtime.js";
@@ -513,7 +513,7 @@ async function _fireNotification(message, type = "info", session = null) {
513
513
  try {
514
514
  const { runObserveHooks } =
515
515
  await import("../lib/settings-hook-events.js");
516
- runObserveHooks(
516
+ await runObserveHooks(
517
517
  _settingsHooks,
518
518
  "Notification",
519
519
  {
@@ -1861,7 +1861,28 @@ export function settleReplCompactionCandidate({
1861
1861
  return { applied: false, error };
1862
1862
  }
1863
1863
 
1864
- if (useJsonl && sessionId && stats?.strategy !== "none") {
1864
+ if (
1865
+ stats?.canonicalReceipt &&
1866
+ !["committed", "degraded"].includes(stats.canonicalReceipt.status)
1867
+ ) {
1868
+ const error = new Error(
1869
+ stats.canonicalReceipt.status === "stale"
1870
+ ? "REPL session changed during canonical compaction"
1871
+ : "canonical compaction requires reconciliation",
1872
+ );
1873
+ error.code =
1874
+ stats.canonicalReceipt.status === "stale"
1875
+ ? "SESSION_REVISION_STALE"
1876
+ : "CC_COMPACTION_RECONCILIATION_REQUIRED";
1877
+ return { applied: false, error };
1878
+ }
1879
+
1880
+ if (
1881
+ useJsonl &&
1882
+ sessionId &&
1883
+ stats?.strategy !== "none" &&
1884
+ stats?.canonicalAlreadySettled !== true
1885
+ ) {
1865
1886
  try {
1866
1887
  persistence.persist(sessionId, {
1867
1888
  ...stats,
@@ -3332,8 +3353,16 @@ async function startAgentReplInWorkspaceOwned(
3332
3353
  // Continue without DB — static prompt fallback
3333
3354
  }
3334
3355
 
3335
- // Initialize prompt compressor (adaptive to model's context window)
3336
- if (feature("PROMPT_COMPRESSOR")) {
3356
+ // Initialize prompt compressor (adaptive to model's context window). A
3357
+ // canonical cutover cannot disable the Kernel writer by toggling the legacy
3358
+ // compressor feature flag; the compressor remains only its summarizer.
3359
+ const { resolveCliContextMemoryCutover } =
3360
+ await import("../lib/context-memory-kernel/authority.js");
3361
+ const contextMemoryCutover = resolveCliContextMemoryCutover({
3362
+ env: options.contextMemoryEnv || process.env,
3363
+ scopeKey: sessionId ? `cli:session:${sessionId}` : "cli:repl",
3364
+ });
3365
+ if (feature("PROMPT_COMPRESSOR") || contextMemoryCutover.canonical) {
3337
3366
  _compressor = new PromptCompressor({
3338
3367
  model,
3339
3368
  provider,
@@ -3358,6 +3387,7 @@ async function startAgentReplInWorkspaceOwned(
3358
3387
  extraToolDefinitions: [],
3359
3388
  hostManagedToolPolicy: null,
3360
3389
  contextEngine: null,
3390
+ contextMemorySkipPlanning: true,
3361
3391
  maxOutputTokens: 2048,
3362
3392
  }),
3363
3393
  });
@@ -3371,6 +3401,40 @@ async function startAgentReplInWorkspaceOwned(
3371
3401
  };
3372
3402
  },
3373
3403
  });
3404
+ if (contextMemoryCutover.canonical) {
3405
+ const compatibilitySummarizer = _compressor;
3406
+ const { compactLiveMessagesCanonical } =
3407
+ await import("../lib/context-memory-kernel/live-compaction.js");
3408
+ _compressor = {
3409
+ canonicalKernel: true,
3410
+ maxTokens: compatibilitySummarizer.maxTokens,
3411
+ shouldAutoCompact: (currentMessages) =>
3412
+ compatibilitySummarizer.shouldAutoCompact(currentMessages),
3413
+ compress: (currentMessages, compressOptions = {}) =>
3414
+ compactLiveMessagesCanonical(currentMessages, {
3415
+ compressor: compatibilitySummarizer,
3416
+ compressOptions,
3417
+ sessionId: sessionId || undefined,
3418
+ operationId: `repl-${randomUUID()}`,
3419
+ provider,
3420
+ model,
3421
+ env: options.contextMemoryEnv || process.env,
3422
+ persist: useJsonl && Boolean(sessionId),
3423
+ trigger: "repl",
3424
+ ...(useJsonl && sessionId
3425
+ ? {
3426
+ commit: (canonicalStats, output) => {
3427
+ _sessionHostLeaseScope?.lease?.assert?.();
3428
+ return _replCompactPersistence.persist(sessionId, {
3429
+ ...canonicalStats,
3430
+ messages: output,
3431
+ });
3432
+ },
3433
+ }
3434
+ : {}),
3435
+ }),
3436
+ };
3437
+ }
3374
3438
  }
3375
3439
  const _autoPinOpt = resolveAutoPinOption({ config: _autoPinCfgValue });
3376
3440
  // Compaction options shared by /compact + auto-compact. Adds the
@@ -3390,7 +3454,7 @@ async function startAgentReplInWorkspaceOwned(
3390
3454
  db,
3391
3455
  process.cwd(),
3392
3456
  );
3393
- if (permanentMemoryStorage) {
3457
+ if (permanentMemoryStorage && !contextMemoryCutover.canonical) {
3394
3458
  permanentMemory = new CLIPermanentMemory(permanentMemoryStorage);
3395
3459
  permanentMemory.initialize();
3396
3460
  }
@@ -3695,13 +3759,13 @@ async function startAgentReplInWorkspaceOwned(
3695
3759
  effectiveHooks._authorityErrors.length > 0
3696
3760
  ? effectiveHooks
3697
3761
  : null;
3698
- // First-run trust notice for an untrusted/cloned repo's shell-running
3699
- // hooks (Claude-Code 2.1.195 parity). Best-effort, stderr-only.
3762
+ // Explain the explicit content-bound trust gate. Displaying the notice
3763
+ // never authorizes project Hooks; only `cc hook trust` does.
3700
3764
  try {
3701
3765
  const notice = projectHookTrustNotice({ cwd: process.cwd() });
3702
3766
  if (notice) process.stderr.write(notice + "\n");
3703
3767
  } catch {
3704
- /* trust notice is best-effort */
3768
+ /* notice output is best-effort; the runtime gate is fail-closed */
3705
3769
  }
3706
3770
  } catch (_err) {
3707
3771
  _settingsHooks = {};
@@ -4137,11 +4201,13 @@ async function startAgentReplInWorkspaceOwned(
4137
4201
  try {
4138
4202
  const { runInstructionsLoadedHooks } =
4139
4203
  await import("../lib/settings-hook-events.js");
4140
- const ctx = runInstructionsLoadedHooks(_settingsHooks, {
4141
- files: _loadedReplInstructions.files,
4142
- cwd: process.cwd(),
4143
- sessionId,
4144
- }).additionalContext;
4204
+ const ctx = (
4205
+ await runInstructionsLoadedHooks(_settingsHooks, {
4206
+ files: _loadedReplInstructions.files,
4207
+ cwd: process.cwd(),
4208
+ sessionId,
4209
+ })
4210
+ ).additionalContext;
4145
4211
  if (ctx) messages.push({ role: "system", content: ctx });
4146
4212
  } catch (_err) {
4147
4213
  // best-effort
@@ -4153,10 +4219,12 @@ async function startAgentReplInWorkspaceOwned(
4153
4219
  try {
4154
4220
  const { runSessionStartHooks } =
4155
4221
  await import("../lib/settings-hook-events.js");
4156
- const ctx = runSessionStartHooks(_settingsHooks, {
4157
- source: "startup",
4158
- cwd: process.cwd(),
4159
- }).additionalContext;
4222
+ const ctx = (
4223
+ await runSessionStartHooks(_settingsHooks, {
4224
+ source: "startup",
4225
+ cwd: process.cwd(),
4226
+ })
4227
+ ).additionalContext;
4160
4228
  if (ctx) messages.push({ role: "system", content: ctx });
4161
4229
  } catch (_err) {
4162
4230
  // best-effort
@@ -4216,19 +4284,63 @@ async function startAgentReplInWorkspaceOwned(
4216
4284
  try {
4217
4285
  const { loadBundle } =
4218
4286
  await import("@chainlesschain/session-core/agent-bundle-loader");
4219
- const { resolveBundle } =
4287
+ const { parseUserMdSeed, resolveBundle } =
4220
4288
  await import("@chainlesschain/session-core/agent-bundle-resolver");
4221
- const { getMemoryStore } =
4222
- await import("../lib/session-core-singletons.js");
4223
4289
  const bundle = loadBundle(options.bundlePath);
4224
-
4225
- const memoryStore = getMemoryStore();
4226
- _bundleResolved = resolveBundle(bundle, {
4227
- memoryStore,
4228
- seedOptions: {
4229
- userId: options.agentId || null,
4230
- },
4231
- });
4290
+ if (contextMemoryCutover.canonical) {
4291
+ _bundleResolved = resolveBundle(bundle);
4292
+ const { createCliCanonicalMemoryService } =
4293
+ await import("../lib/context-memory-kernel/memory-service.js");
4294
+ const memoryService = createCliCanonicalMemoryService({
4295
+ env: options.contextMemoryEnv || process.env,
4296
+ });
4297
+ const bundleId = String(bundle.manifest?.id || "unknown");
4298
+ const userId = options.agentId || "local-user";
4299
+ const entries = parseUserMdSeed(bundle.userMd);
4300
+ let seeded = 0;
4301
+ let skipped = 0;
4302
+ for (const [index, entry] of entries.entries()) {
4303
+ const seedDigest = createHash("sha256")
4304
+ .update(
4305
+ JSON.stringify([
4306
+ "chainlesschain.agent-bundle-user-seed/v1",
4307
+ bundleId,
4308
+ index,
4309
+ entry.category,
4310
+ entry.content,
4311
+ ]),
4312
+ )
4313
+ .digest("hex");
4314
+ const ensured = await memoryService.ensureScoped(entry.content, {
4315
+ memoryId: `bundle-${seedDigest.slice(0, 32)}`,
4316
+ scope: "user",
4317
+ scopeId: userId,
4318
+ category: entry.category,
4319
+ source: "agent-bundle",
4320
+ actor: `bundle:${bundleId}`,
4321
+ evidenceStore: "agent-bundle",
4322
+ evidenceId: `${bundleId}-${index}`,
4323
+ tags: [
4324
+ "bundle-seed",
4325
+ `bundle:${bundleId}`,
4326
+ "user-seed",
4327
+ entry.category,
4328
+ ],
4329
+ });
4330
+ if (ensured.created) seeded += 1;
4331
+ else skipped += 1;
4332
+ }
4333
+ _bundleResolved.seedResult = { seeded, skipped };
4334
+ } else {
4335
+ const { getMemoryStore } =
4336
+ await import("../lib/session-core-singletons.js");
4337
+ _bundleResolved = resolveBundle(bundle, {
4338
+ memoryStore: getMemoryStore(),
4339
+ seedOptions: {
4340
+ userId: options.agentId || null,
4341
+ },
4342
+ });
4343
+ }
4232
4344
 
4233
4345
  if (_bundleResolved.systemPrompt) {
4234
4346
  messages.push({
@@ -4492,17 +4604,18 @@ async function startAgentReplInWorkspaceOwned(
4492
4604
  // Apply bundle approval policy to this session (after both gate and sessionId are ready)
4493
4605
  if (_bundleResolved?.approvalPolicy?.default && _approvalGate && sessionId) {
4494
4606
  try {
4495
- _approvalGate.setSessionPolicy(
4607
+ await _approvalGate.setSessionPolicy(
4496
4608
  sessionId,
4497
4609
  _bundleResolved.approvalPolicy.default,
4498
4610
  );
4611
+ await _approvalGate.awaitPersistence?.();
4499
4612
  // Mirror it so Shift+Tab cycling starts from the real tier.
4500
4613
  const applied = parsePermissionTier(
4501
4614
  _bundleResolved.approvalPolicy.default,
4502
4615
  );
4503
4616
  if (applied) _sessionTier = applied;
4504
- } catch (_err) {
4505
- // Non-critical — invalid policy value is silently ignored
4617
+ } catch (error) {
4618
+ logger.warn(`Bundle approval policy was not persisted: ${error.message}`);
4506
4619
  }
4507
4620
  }
4508
4621
 
@@ -4515,14 +4628,15 @@ async function startAgentReplInWorkspaceOwned(
4515
4628
  const parsed = parsePermissionModeArg(options.permissionMode);
4516
4629
  if (parsed && typeof _approvalGate.setSessionPolicy === "function") {
4517
4630
  try {
4518
- _approvalGate.setSessionPolicy(sessionId, parsed.tier);
4631
+ await _approvalGate.setSessionPolicy(sessionId, parsed.tier);
4632
+ await _approvalGate.awaitPersistence?.();
4519
4633
  _sessionTier = parsed.auto
4520
4634
  ? "auto"
4521
4635
  : parsed.dontAsk
4522
4636
  ? "dontAsk"
4523
4637
  : parsed.tier;
4524
- } catch (_err) {
4525
- // Non-critical keep the default tier
4638
+ } catch (error) {
4639
+ logger.warn(`Approval policy was not persisted: ${error.message}`);
4526
4640
  }
4527
4641
  }
4528
4642
  }
@@ -4625,7 +4739,7 @@ async function startAgentReplInWorkspaceOwned(
4625
4739
  try {
4626
4740
  const { runObserveHooks } =
4627
4741
  await import("../lib/settings-hook-events.js");
4628
- runObserveHooks(
4742
+ await runObserveHooks(
4629
4743
  _settingsHooks,
4630
4744
  "SessionResume",
4631
4745
  {
@@ -5190,7 +5304,7 @@ async function startAgentReplInWorkspaceOwned(
5190
5304
  let _lastIdleEscAt = 0;
5191
5305
  let _replKeypressHandler = null;
5192
5306
  if (process.stdin.isTTY) {
5193
- _replKeypressHandler = (_str, key) => {
5307
+ _replKeypressHandler = async (_str, key) => {
5194
5308
  const k = key || {};
5195
5309
  // 1) Turn abort always wins, regardless of vim mode.
5196
5310
  if (k.name === "escape" && !k.meta && _turnAbort) {
@@ -5240,7 +5354,8 @@ async function startAgentReplInWorkspaceOwned(
5240
5354
  // (cycling is also how you exit auto mode without /permissions).
5241
5355
  const next = nextTier(gateTierFor(_sessionTier));
5242
5356
  try {
5243
- _approvalGate.setSessionPolicy(sessionId, next);
5357
+ await _approvalGate.setSessionPolicy(sessionId, next);
5358
+ await _approvalGate.awaitPersistence?.();
5244
5359
  _sessionTier = next;
5245
5360
  process.stdout.write(
5246
5361
  "\n" +
@@ -6697,7 +6812,7 @@ async function startAgentReplInWorkspaceOwned(
6697
6812
  const { runCwdChangedHooks, dispatchAsyncHooks } =
6698
6813
  await import("../lib/settings-hook-events.js");
6699
6814
  const payload = { oldCwd, newCwd, sessionId };
6700
- runCwdChangedHooks(_settingsHooks, payload);
6815
+ await runCwdChangedHooks(_settingsHooks, payload);
6701
6816
  if (!_asyncHookSupervisor) {
6702
6817
  const { AsyncHookSupervisor } =
6703
6818
  await import("../lib/async-hook-supervisor.js");
@@ -7251,6 +7366,13 @@ async function startAgentReplInWorkspaceOwned(
7251
7366
  // recent messages + the conversation flow). Safe (never orphans a tool
7252
7367
  // pair); cheaper + less lossy than a full /compact.
7253
7368
  if (trimmed === "/microcompact") {
7369
+ if (contextMemoryCutover.canonical) {
7370
+ logger.warn(
7371
+ "/microcompact is read-only after Context/Memory cutover; use /compact for canonical CAS/receipt semantics.",
7372
+ );
7373
+ prompt();
7374
+ return;
7375
+ }
7254
7376
  const { microCompact } = await import("../lib/micro-compact.js");
7255
7377
  const { messages: mc, stats } = microCompact(messages);
7256
7378
  if (stats.trimmed > 0) {
@@ -7548,7 +7670,9 @@ async function startAgentReplInWorkspaceOwned(
7548
7670
  session_id: sessionId || null,
7549
7671
  source: "reload-plugins",
7550
7672
  };
7551
- runObserveHooks(_settingsHooks, "ConfigChange", payload, { cwd });
7673
+ await runObserveHooks(_settingsHooks, "ConfigChange", payload, {
7674
+ cwd,
7675
+ });
7552
7676
  if (!_asyncHookSupervisor) {
7553
7677
  const { AsyncHookSupervisor } =
7554
7678
  await import("../lib/async-hook-supervisor.js");
@@ -8634,7 +8758,8 @@ async function startAgentReplInWorkspaceOwned(
8634
8758
  );
8635
8759
  } else {
8636
8760
  try {
8637
- _approvalGate.setSessionPolicy(sessionId, parsed.tier);
8761
+ await _approvalGate.setSessionPolicy(sessionId, parsed.tier);
8762
+ await _approvalGate.awaitPersistence?.();
8638
8763
  _sessionTier = parsed.auto
8639
8764
  ? "auto"
8640
8765
  : parsed.dontAsk
@@ -8964,7 +9089,7 @@ async function startAgentReplInWorkspaceOwned(
8964
9089
  try {
8965
9090
  const { runUserPromptSubmitHooks } =
8966
9091
  await import("../lib/settings-hook-events.js");
8967
- const ups = runUserPromptSubmitHooks(_settingsHooks, {
9092
+ const ups = await runUserPromptSubmitHooks(_settingsHooks, {
8968
9093
  prompt: userContent,
8969
9094
  cwd: process.cwd(),
8970
9095
  sessionId,
@@ -9726,7 +9851,7 @@ async function startAgentReplInWorkspaceOwned(
9726
9851
  _turnBindingProducer?.persistIfDirty();
9727
9852
  // Auto-compact when context grows too large
9728
9853
  if (
9729
- feature("PROMPT_COMPRESSOR") &&
9854
+ (feature("PROMPT_COMPRESSOR") || contextMemoryCutover.canonical) &&
9730
9855
  _compressor &&
9731
9856
  !_compactionUsageBlock &&
9732
9857
  !_runtimeLedgerTerminalLatch.isTripped() &&
@@ -9802,7 +9927,7 @@ async function startAgentReplInWorkspaceOwned(
9802
9927
  }
9803
9928
 
9804
9929
  // Store as episodic memory
9805
- if (db) {
9930
+ if (db && !contextMemoryCutover.canonical) {
9806
9931
  try {
9807
9932
  storeMemory(db, promptText, { importance: 0.3, type: "episodic" });
9808
9933
  } catch (_e) {
@@ -9819,7 +9944,7 @@ async function startAgentReplInWorkspaceOwned(
9819
9944
  try {
9820
9945
  const { runObserveHooks, dispatchAsyncHooks } =
9821
9946
  await import("../lib/settings-hook-events.js");
9822
- runObserveHooks(
9947
+ await runObserveHooks(
9823
9948
  _settingsHooks,
9824
9949
  "Stop",
9825
9950
  { session_id: sessionId || null },
@@ -9966,7 +10091,7 @@ async function startAgentReplInWorkspaceOwned(
9966
10091
  try {
9967
10092
  const { runObserveHooks } =
9968
10093
  await import("../lib/settings-hook-events.js");
9969
- runObserveHooks(
10094
+ await runObserveHooks(
9970
10095
  _settingsHooks,
9971
10096
  "SessionEnd",
9972
10097
  { reason: "exit", cwd: process.cwd(), session_id: sessionId },
@@ -9981,11 +10106,15 @@ async function startAgentReplInWorkspaceOwned(
9981
10106
  try {
9982
10107
  if (useJsonl) {
9983
10108
  _persistReplContextSources();
9984
- // JSONL: write final compact snapshot for fast rebuild
9985
- _replCompactPersistence.persist(sessionId, {
9986
- strategy: "session-end",
9987
- messages,
9988
- });
10109
+ // The legacy session-end checkpoint reused the compact event as a
10110
+ // second writer. Canonical sessions already persist every message;
10111
+ // only Kernel-authorized compaction may replace the physical head.
10112
+ if (!contextMemoryCutover.canonical) {
10113
+ _replCompactPersistence.persist(sessionId, {
10114
+ strategy: "session-end",
10115
+ messages,
10116
+ });
10117
+ }
9989
10118
  } else if (db) {
9990
10119
  saveMessages(db, sessionId, messages);
9991
10120
  }
@@ -9994,7 +10123,11 @@ async function startAgentReplInWorkspaceOwned(
9994
10123
  }
9995
10124
  }
9996
10125
  // Auto-summarize session into permanent memory
9997
- if (permanentMemory && messages.length > 4) {
10126
+ if (
10127
+ !contextMemoryCutover.canonical &&
10128
+ permanentMemory &&
10129
+ messages.length > 4
10130
+ ) {
9998
10131
  try {
9999
10132
  permanentMemory.autoSummarize(messages);
10000
10133
  } catch (_e) {
@@ -10002,7 +10135,7 @@ async function startAgentReplInWorkspaceOwned(
10002
10135
  }
10003
10136
  }
10004
10137
  // Consolidate memory
10005
- if (db) {
10138
+ if (db && !contextMemoryCutover.canonical) {
10006
10139
  try {
10007
10140
  consolidateMemory(db);
10008
10141
  } catch (_e) {