chainlesschain 0.166.9 → 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 (232) hide show
  1. package/README.md +33 -0
  2. package/bin/chainlesschain.js +5 -0
  3. package/package.json +5 -2
  4. package/src/assets/web-panel/assets/{AIOps-DJvpifGx.js → AIOps-BN25cNOD.js} +1 -1
  5. package/src/assets/web-panel/assets/{ActionButton-D2UhuF_A.js → ActionButton-Da9IP-m5.js} +1 -1
  6. package/src/assets/web-panel/assets/{Analytics-C9ho9obu.js → Analytics-D7hkEvQm.js} +3 -3
  7. package/src/assets/web-panel/assets/{AppLayout-BvRCpFK3.js → AppLayout-CCV4Xnbc.js} +5 -5
  8. package/src/assets/web-panel/assets/{Artifacts-jxrySvpk.js → Artifacts-CVSnVJeA.js} +1 -1
  9. package/src/assets/web-panel/assets/{Audit-ovEw0ZYl.js → Audit-CuYdw5Ag.js} +1 -1
  10. package/src/assets/web-panel/assets/{BackgroundAgents-D7H5z6zS.js → BackgroundAgents-DZCnK-Tf.js} +1 -1
  11. package/src/assets/web-panel/assets/{Backup-BuXob8za.js → Backup-cV9FdpTy.js} +1 -1
  12. package/src/assets/web-panel/assets/{BaseInput-CtnszuQ2.js → BaseInput-BRnv6YSp.js} +1 -1
  13. package/src/assets/web-panel/assets/{Chat-B_mYE8fJ.js → Chat-Bw5w87P4.js} +6 -6
  14. package/src/assets/web-panel/assets/ChatBubbleRenderer-C0GjtUAw.js +1 -0
  15. package/src/assets/web-panel/assets/{Checkbox-ierdtcJD.js → Checkbox-DaoTqcdt.js} +1 -1
  16. package/src/assets/web-panel/assets/{Codegen-3VKPJD_B.js → Codegen-B4dYcEIi.js} +1 -1
  17. package/src/assets/web-panel/assets/{Col-1EdMyf5P.js → Col-mAhuOeuD.js} +1 -1
  18. package/src/assets/web-panel/assets/{Community-D6H7UA8K.js → Community-BK6KEdBk.js} +1 -1
  19. package/src/assets/web-panel/assets/{Compact-BBAZvYIm.js → Compact-CCglmNu5.js} +1 -1
  20. package/src/assets/web-panel/assets/{Compliance-CgsTrAoj.js → Compliance-Cm8S4of7.js} +1 -1
  21. package/src/assets/web-panel/assets/{Cowork-tnZgLoTE.js → Cowork-Dhs1QLMe.js} +3 -3
  22. package/src/assets/web-panel/assets/{Cron-CPpZw2Nh.js → Cron-CLlhmXWk.js} +2 -2
  23. package/src/assets/web-panel/assets/{Crosschain-BymBcp5z.js → Crosschain-BnHVbaNs.js} +1 -1
  24. package/src/assets/web-panel/assets/{DID-DKPxS_K1.js → DID-UzQP9-0O.js} +2 -2
  25. package/src/assets/web-panel/assets/{Dashboard-DvJhEmH9.js → Dashboard-CBdlPClz.js} +2 -2
  26. package/src/assets/web-panel/assets/{Dropdown-b8iQyQIZ.js → Dropdown-axIRPdq1.js} +1 -1
  27. package/src/assets/web-panel/assets/{EmailListRenderer--0-A-zKb.js → EmailListRenderer-DUalW5rx.js} +1 -1
  28. package/src/assets/web-panel/assets/{FamilyGuardDashboard-C12iDN06.js → FamilyGuardDashboard-Bl4W9luY.js} +1 -1
  29. package/src/assets/web-panel/assets/{Federation-BRhaE2Z8.js → Federation-C1yP-uEu.js} +1 -1
  30. package/src/assets/web-panel/assets/{FormItemContext-C4dnq7yf.js → FormItemContext-Xh6Ig5q8.js} +1 -1
  31. package/src/assets/web-panel/assets/{GenericCardRenderer-CGAdbR5n.js → GenericCardRenderer-C2cz3bt2.js} +1 -1
  32. package/src/assets/web-panel/assets/{Git-4eA2fYzL.js → Git-C_z63ixg.js} +2 -2
  33. package/src/assets/web-panel/assets/{Governance-BJuY9Y-9.js → Governance-BYqB33_3.js} +1 -1
  34. package/src/assets/web-panel/assets/{Inference-DZ5Dy4up.js → Inference-CEULuArm.js} +1 -1
  35. package/src/assets/web-panel/assets/{KnowledgeGraph-BMTjRs4A.js → KnowledgeGraph-fgMsu-0H.js} +1 -1
  36. package/src/assets/web-panel/assets/{Logs-BKEeQEfJ.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-Dhho4fEg.js → Marketplace-B8zyLiFe.js} +1 -1
  39. package/src/assets/web-panel/assets/{McpTools-BW6xxSlU.js → McpTools-BLAN2mWW.js} +3 -3
  40. package/src/assets/web-panel/assets/{Memory-mPqlpSkq.js → Memory-CrQcFM7u.js} +2 -2
  41. package/src/assets/web-panel/assets/{MobileBridge-Cb9N_DQI.js → MobileBridge-DVnyiiU-.js} +1 -1
  42. package/src/assets/web-panel/assets/{MobileProjects-BNs8tah_.js → MobileProjects-qjCME5OD.js} +1 -1
  43. package/src/assets/web-panel/assets/{Mtc-CaxBt8tn.js → Mtc-4JE3C3It.js} +2 -2
  44. package/src/assets/web-panel/assets/{MtcAudit-DRPQbp3t.js → MtcAudit-CjBuak9I.js} +5 -5
  45. package/src/assets/web-panel/assets/{Multisig-CRm-d8bK.js → Multisig-BtPcYQcC.js} +3 -3
  46. package/src/assets/web-panel/assets/{NLProgramming-BCCk3LPs.js → NLProgramming-Cx653_Ba.js} +1 -1
  47. package/src/assets/web-panel/assets/{Notes-Cv8SN8gN.js → Notes-CkuD3YzS.js} +4 -4
  48. package/src/assets/web-panel/assets/{NotificationSettings-CggIvTh5.js → NotificationSettings-BgNgU7HH.js} +1 -1
  49. package/src/assets/web-panel/assets/{OrderTableRenderer-BW3_bV12.js → OrderTableRenderer-BTC8W0a-.js} +1 -1
  50. package/src/assets/web-panel/assets/{Organization-BuRE-VCO.js → Organization-Dmd4Hjxz.js} +4 -4
  51. package/src/assets/web-panel/assets/{Overflow-DBrm1gju.js → Overflow-C_5DA-G0.js} +1 -1
  52. package/src/assets/web-panel/assets/{P2P-CWVnDYgS.js → P2P-uwslV4XC.js} +2 -2
  53. package/src/assets/web-panel/assets/{PdhVaultBrowser-8RKUIpte.js → PdhVaultBrowser-CuNgwVnX.js} +5 -5
  54. package/src/assets/web-panel/assets/{Permissions-tDUAxogW.js → Permissions-CJayVX9H.js} +4 -4
  55. package/src/assets/web-panel/assets/{PersonalDataHub-Dv2-CFis.js → PersonalDataHub-Cb05H5go.js} +4 -4
  56. package/src/assets/web-panel/assets/{Pipeline-DM6kvFni.js → Pipeline-BZlGKapZ.js} +1 -1
  57. package/src/assets/web-panel/assets/{Privacy-DzK-yL0d.js → Privacy-BIzZWYzd.js} +1 -1
  58. package/src/assets/web-panel/assets/{ProjectInit-B5UrNpkj.js → ProjectInit-vEYYyQXQ.js} +2 -2
  59. package/src/assets/web-panel/assets/{ProjectSettings-CxJD43oW.js → ProjectSettings-MZqTy5CC.js} +2 -2
  60. package/src/assets/web-panel/assets/Projects-CRARUOl8.js +1 -0
  61. package/src/assets/web-panel/assets/{Providers-CYl4jRYK.js → Providers-80VAK8PX.js} +1 -1
  62. package/src/assets/web-panel/assets/{QrScannerModal-DeH2T0fH.js → QrScannerModal-CzRSoIwK.js} +1 -1
  63. package/src/assets/web-panel/assets/{QuickAsk-Bw9k_kTk.js → QuickAsk-BpwQ2n4C.js} +1 -1
  64. package/src/assets/web-panel/assets/{Recommend-Bl_jGwoi.js → Recommend-BC03TZ79.js} +1 -1
  65. package/src/assets/web-panel/assets/{RemoteSession-d6u01Kq0.js → RemoteSession-DE59-jaa.js} +2 -2
  66. package/src/assets/web-panel/assets/{Reputation-Ds_Dfr-k.js → Reputation-DOHmeWyA.js} +1 -1
  67. package/src/assets/web-panel/assets/{Row-BpQUQTNj.js → Row-hc5RZl1D.js} +1 -1
  68. package/src/assets/web-panel/assets/{RssFeed-BatpZBGt.js → RssFeed-Cv5uMP7E.js} +3 -3
  69. package/src/assets/web-panel/assets/{Search-D7hOObzi.js → Search-qohu7Ug0.js} +1 -1
  70. package/src/assets/web-panel/assets/{Security-dXQ4FKNt.js → Security-drCPFWV5.js} +4 -4
  71. package/src/assets/web-panel/assets/{Services-D8wInGPa.js → Services-BAEgUeRy.js} +2 -2
  72. package/src/assets/web-panel/assets/{Skeleton-DXQCoYpM.js → Skeleton-CkJkKBlo.js} +1 -1
  73. package/src/assets/web-panel/assets/{Skills-D3oLRIVn.js → Skills-bMuKEpez.js} +1 -1
  74. package/src/assets/web-panel/assets/{Sla-BmP4-LnJ.js → Sla-DxWQVHRC.js} +1 -1
  75. package/src/assets/web-panel/assets/{SpeechSettings-DLj-xzro.js → SpeechSettings-BpS8idmV.js} +1 -1
  76. package/src/assets/web-panel/assets/{SyncSettings-8KKaaRMr.js → SyncSettings-BPBLlW5v.js} +2 -2
  77. package/src/assets/web-panel/assets/{Tasks-GyK42I7C.js → Tasks-C4SLEeUh.js} +1 -1
  78. package/src/assets/web-panel/assets/{Templates-n1y_8UBG.js → Templates-r-wfU39U.js} +1 -1
  79. package/src/assets/web-panel/assets/{Tenant-B39nBph8.js → Tenant-C7vjRmLN.js} +1 -1
  80. package/src/assets/web-panel/assets/{Terminal-DCQoOKXe.js → Terminal-DdzeFCV2.js} +2 -2
  81. package/src/assets/web-panel/assets/{TimelineRenderer-BkhbDfXk.js → TimelineRenderer-CYyWN2KD.js} +1 -1
  82. package/src/assets/web-panel/assets/{Tokens-BeHIIU8D.js → Tokens-D8A9osUg.js} +1 -1
  83. package/src/assets/web-panel/assets/{Trigger-BHvWXVOb.js → Trigger-DBvrNlyS.js} +1 -1
  84. package/src/assets/web-panel/assets/{Trust-y2WaOSto.js → Trust-DBVAGc7o.js} +1 -1
  85. package/src/assets/web-panel/assets/{UkeySign-DBFeJBzt.js → UkeySign-C1vQUCRJ.js} +1 -1
  86. package/src/assets/web-panel/assets/{VideoEditing-BEOWitC-.js → VideoEditing-BKs4dah4.js} +1 -1
  87. package/src/assets/web-panel/assets/{Wallet-BITedTe6.js → Wallet-ByIuj3lD.js} +4 -4
  88. package/src/assets/web-panel/assets/{WebAuthn-DMwlJVin.js → WebAuthn-DYlAFCm9.js} +3 -3
  89. package/src/assets/web-panel/assets/{WorkflowEditor-CKfGFEu1.js → WorkflowEditor-Dwyadd0c.js} +1 -1
  90. package/src/assets/web-panel/assets/{chat-DR6gnBGF.js → chat-Bm2f3s08.js} +1 -1
  91. package/src/assets/web-panel/assets/{colors-C_Hw5NCn.js → colors-C8ORSh7V.js} +1 -1
  92. package/src/assets/web-panel/assets/{compact-item-B8IPwsEu.js → compact-item-1iVlnsM-.js} +1 -1
  93. package/src/assets/web-panel/assets/{createContext-D-u4JVnJ.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-CZubdS4D.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-C25rOz7O.js → index-B53c3diB.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-CfniPP5p.js → index-B59OWAs7.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-11ASqx-A.js → index-B8BrB0Ls.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-auyNYjLo.js → index-BC32_0xT.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-Ctje8Vl3.js → index-BC8Wb6cy.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-Cg2bCeol.js → index-BCOhTILd.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-D1w96gg9.js → index-BFniLMn9.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-k1Xa5iw1.js → index-BIvM-uAX.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-DuOU5apg.js → index-BK-RY0-7.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-D47jt8ET.js → index-BQL9r73Y.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-C2VmtNaQ.js → index-BVtnizyC.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-Bizm87cX.js → index-Bf1PlIHp.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-Dt-w3xQ7.js → index-Bgw4Y2rU.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-ffe7bvqP.js → index-BgwLNxmr.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-Cl5RpreD.js → index-C-J5-pGH.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-idZKyADQ.js → index-C-ZIHi42.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-LvjAKDSl.js → index-C3B1S-mW.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-DmRcgiYT.js → index-C5RfRciU.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-rYBHSDcJ.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-DcFjRT-K.js → index-CTfEmKK0.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-DjRrqooR.js → index-CfiHyVyl.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-DpjHpRoq.js → index-CkFvuAex.js} +3 -3
  120. package/src/assets/web-panel/assets/{index-BzoFanEQ.js → index-D98FXb0w.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-Cbm8F0M2.js → index-DDHk911Q.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-BXS6wYJZ.js → index-DJxtPFOh.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-DY6MHo9D.js → index-DVJ1uKf4.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-CiXkhOkY.js → index-Dcck8QfW.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-mYZJxGH6.js → index-DgUE51Pz.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-CqmLw8cs.js → index-Dsve5Gkv.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-xoNssgz_.js → index-DvedhJeM.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-DfnzrUxU.js → index-DwMdWKiF.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-Bi21Etg4.js → index-OcbzdRpT.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-DJ6pG79m.js → index-fPK6GFEg.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-_nL79NT8.js → index-geQinnns.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-DTosx2Wu.js → index-pHWA7bmM.js} +1 -1
  133. package/src/assets/web-panel/assets/{index-cVqbas5C.js → index-reUHhuz8.js} +1 -1
  134. package/src/assets/web-panel/assets/{index-Bv2132PO.js → index-tqTx5wXo.js} +1 -1
  135. package/src/assets/web-panel/assets/{initDefaultProps-lcU_dT2r.js → initDefaultProps-CuA-cpkL.js} +1 -1
  136. package/src/assets/web-panel/assets/{motion-Dc7UNXZ1.js → motion-CimmE_9b.js} +1 -1
  137. package/src/assets/web-panel/assets/{move-Cll8ZXaL.js → move-DlGlrltz.js} +1 -1
  138. package/src/assets/web-panel/assets/{mtc-parser-CAb_yLIM.js → mtc-parser-CK6BJQ07.js} +1 -1
  139. package/src/assets/web-panel/assets/{omit-DurYMyTe.js → omit-BKjBfZfB.js} +1 -1
  140. package/src/assets/web-panel/assets/{pickAttrs-BITQyOlw.js → pickAttrs-B2chVYw9.js} +1 -1
  141. package/src/assets/web-panel/assets/{placementArrow-Dg1rH91i.js → placementArrow-BW8aLJJ3.js} +1 -1
  142. package/src/assets/web-panel/assets/{responsiveObserve-D_EWIeac.js → responsiveObserve-dXlPl66S.js} +1 -1
  143. package/src/assets/web-panel/assets/{slide-lK4d3zsh.js → slide-hSa89S4G.js} +1 -1
  144. package/src/assets/web-panel/assets/{statusUtils-Bflq-Git.js → statusUtils-DM6KLt-s.js} +1 -1
  145. package/src/assets/web-panel/assets/{styleChecker-Ccp0I-wt.js → styleChecker-C9MQAK15.js} +1 -1
  146. package/src/assets/web-panel/assets/{useFlexGapSupport-CYZbByYA.js → useFlexGapSupport-BpQDpP0z.js} +1 -1
  147. package/src/assets/web-panel/assets/{useFs-B_x0nxFD.js → useFs-C7rtRViA.js} +1 -1
  148. package/src/assets/web-panel/assets/{usePersonalDataHub-DW55rL85.js → usePersonalDataHub-Dm15xafq.js} +1 -1
  149. package/src/assets/web-panel/assets/{vnode-Ca6MH3W8.js → vnode-mEiEytw4.js} +1 -1
  150. package/src/assets/web-panel/assets/{zoom-NdHelOog.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 +41 -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/index.js +2 -0
  195. package/src/lib/graph-kernel/migration-saga.js +2 -2
  196. package/src/lib/graph-kernel/production-cutover-evidence.js +976 -0
  197. package/src/lib/graph-kernel/retirement-evidence.js +12 -4
  198. package/src/lib/hierarchical-memory.js +22 -0
  199. package/src/lib/hook-audit-store.js +170 -0
  200. package/src/lib/hook-event-bus.cjs +0 -0
  201. package/src/lib/hook-manager.js +25 -83
  202. package/src/lib/hook-runtime-adapters.js +233 -0
  203. package/src/lib/hook-runtime-contract.cjs +291 -0
  204. package/src/lib/hook-runtime-contract.js +21 -0
  205. package/src/lib/hook-trust.js +210 -0
  206. package/src/lib/hooks-v2-producers.js +52 -6
  207. package/src/lib/hooks-v2-runtime.js +443 -178
  208. package/src/lib/llm-pricing.js +10 -0
  209. package/src/lib/memory-manager.js +29 -4
  210. package/src/lib/model-context-window.js +52 -0
  211. package/src/lib/permanent-memory.js +17 -0
  212. package/src/lib/plan-mode.js +8 -4
  213. package/src/lib/process-execution-broker/index.js +208 -16
  214. package/src/lib/runtime-usage-ledger.js +20 -0
  215. package/src/lib/session-consolidator.js +59 -0
  216. package/src/lib/session-core-singletons.js +17 -4
  217. package/src/lib/session-hooks.js +29 -2
  218. package/src/lib/session-transcript-migration.js +188 -0
  219. package/src/lib/settings-hook-events.cjs +37 -401
  220. package/src/lib/settings-hook-events.js +210 -8
  221. package/src/lib/settings-hooks.cjs +42 -83
  222. package/src/lib/ws-session-manager.js +4 -1
  223. package/src/repl/agent-repl.js +186 -53
  224. package/src/runtime/agent-core.js +376 -350
  225. package/src/runtime/headless-runner.js +40 -33
  226. package/src/runtime/headless-stream.js +131 -30
  227. package/src/assets/web-panel/assets/ChatBubbleRenderer-DaiA6CsX.js +0 -1
  228. package/src/assets/web-panel/assets/MarkdownRenderer-B05DgASC.js +0 -1
  229. package/src/assets/web-panel/assets/Projects-Z2Orm8Ma.js +0 -1
  230. package/src/assets/web-panel/assets/devWarning-Cq6lSd_q.js +0 -1
  231. package/src/assets/web-panel/assets/index-BQ3213fz.js +0 -1
  232. package/src/assets/web-panel/assets/index-vJagfET2.js +0 -1
@@ -12,6 +12,11 @@
12
12
  import { createHash } from "node:crypto";
13
13
  import { feature, featureVariant } from "../lib/feature-flags.js";
14
14
  import { isAbortError } from "../lib/abort-utils.js";
15
+ import {
16
+ CONTEXT_WINDOWS,
17
+ getContextWindow,
18
+ } from "../lib/model-context-window.js";
19
+ export { CONTEXT_WINDOWS, getContextWindow } from "../lib/model-context-window.js";
15
20
  import {
16
21
  DURABLE_SYSTEM_MESSAGE_KINDS,
17
22
  getDurableSystemMessageProvenance,
@@ -184,61 +189,6 @@ function getContent(msg) {
184
189
  : JSON.stringify(msg.content || "");
185
190
  }
186
191
 
187
- export const CONTEXT_WINDOWS = {
188
- "qwen2.5:7b": 32768,
189
- "qwen2.5:14b": 32768,
190
- "qwen2.5-coder:14b": 32768,
191
- "qwen2:7b": 32768,
192
- "llama3:8b": 8192,
193
- "mistral:7b": 32768,
194
- "codellama:7b": 16384,
195
- "gpt-4o": 128000,
196
- "gpt-4o-mini": 128000,
197
- "gpt-4-turbo": 128000,
198
- "gpt-3.5-turbo": 16385,
199
- o1: 200000,
200
- "claude-opus-4-6": 200000,
201
- "claude-sonnet-4-6": 200000,
202
- "claude-haiku-4-5-20251001": 200000,
203
- "deepseek-chat": 64000,
204
- "deepseek-coder": 64000,
205
- "deepseek-reasoner": 64000,
206
- "qwen-turbo": 131072,
207
- "qwen-plus": 131072,
208
- "qwen-max": 32768,
209
- "gemini-2.0-flash": 1048576,
210
- "gemini-2.0-pro": 1048576,
211
- "gemini-1.5-flash": 1048576,
212
- "moonshot-v1-auto": 131072,
213
- "moonshot-v1-8k": 8192,
214
- "moonshot-v1-32k": 32768,
215
- "moonshot-v1-128k": 131072,
216
- "doubao-seed-1-6-251015": 32768,
217
- "doubao-seed-2-1-pro-260628": 32768,
218
- _provider_defaults: {
219
- ollama: 32768,
220
- openai: 128000,
221
- anthropic: 200000,
222
- deepseek: 64000,
223
- dashscope: 131072,
224
- gemini: 1048576,
225
- kimi: 131072,
226
- volcengine: 32768,
227
- minimax: 32768,
228
- mistral: 32768,
229
- },
230
- };
231
-
232
- export function getContextWindow(model, provider) {
233
- if (model && CONTEXT_WINDOWS[model]) {
234
- return CONTEXT_WINDOWS[model];
235
- }
236
- if (provider && CONTEXT_WINDOWS._provider_defaults[provider]) {
237
- return CONTEXT_WINDOWS._provider_defaults[provider];
238
- }
239
- return 32768;
240
- }
241
-
242
192
  export const COMPRESSION_VARIANTS = {
243
193
  aggressive: { tokenFactor: 0.4, messageFactor: 0.7 },
244
194
  balanced: { tokenFactor: 0.6, messageFactor: 1.0 },
@@ -259,10 +259,14 @@ export function normalizeAgentSandbox(value, options = {}) {
259
259
  */
260
260
  export function normalizeAgentSandboxMode(mode, value, options = {}) {
261
261
  if (mode == null || mode === "") {
262
- // Keep the container sandbox opt-in unless CLI/settings policy explicitly
263
- // enables it. The process broker still applies its platform boundary, but
264
- // starting a normal agent must not require Docker to be installed/running.
265
- return normalizeAgentSandbox(value, options);
262
+ // Public agent execution defaults to a real, fail-closed workspace
263
+ // sandbox with networking disabled. Bare-host execution remains available
264
+ // only through the explicit `off` mode below, where managed policy can
265
+ // prohibit it and the CLI records a high-risk security event.
266
+ return normalizeAgentSandboxMode("workspace-write", value || true, {
267
+ ...options,
268
+ network: false,
269
+ });
266
270
  }
267
271
  if (!AGENT_SANDBOX_MODES.includes(mode)) {
268
272
  const error = new Error(
@@ -392,6 +396,9 @@ export function executeSandboxedShell(command, sandbox, options = {}) {
392
396
  timeout: options.timeout,
393
397
  maxBuffer: options.maxBuffer,
394
398
  windowsHide: true,
399
+ requirePersistentAudit: true,
400
+ auditRedactArgIndexes: [args.length - 1],
401
+ auditContext: options.auditContext,
395
402
  });
396
403
  if (result.error) {
397
404
  return {
@@ -461,6 +468,9 @@ function executeBubblewrapShell(command, sandbox, options, hostCwd, policy) {
461
468
  timeout: options.timeout,
462
469
  maxBuffer: options.maxBuffer,
463
470
  windowsHide: true,
471
+ requirePersistentAudit: true,
472
+ auditRedactArgIndexes: [args.length - 1],
473
+ auditContext: options.auditContext,
464
474
  });
465
475
  if (result.error) {
466
476
  return {
@@ -1,11 +1,11 @@
1
1
  import path from "node:path";
2
2
  import { createHash } from "node:crypto";
3
- import { JsonlRolloutStore } from "../app-server/rollout-store.js";
3
+ import { createRolloutStore } from "../app-server/rollout-store-factory.js";
4
4
 
5
5
  export const TEAM_DISTRIBUTED_GRAPH_BRIDGE_SCHEMA =
6
6
  "chainlesschain.team-distributed-graph-bridge/v1";
7
7
 
8
- // Keep every derived thread/idempotency key inside JsonlRolloutStore's own
8
+ // Keep every derived thread/idempotency key inside the RolloutStore contract's
9
9
  // bounds after this adapter adds its domain prefix.
10
10
  const ID = /^[A-Za-z0-9][A-Za-z0-9._:/-]{0,127}$/u;
11
11
  const REQUEST_TYPES = new Set(["dispatch", "settle", "cancel"]);
@@ -74,7 +74,7 @@ export class TeamDistributedGraphBridge {
74
74
  this.runId = identifier(runId, "runId");
75
75
  this.threadId = identifier(`team-graph-bridge:${this.queueId}`, "threadId");
76
76
  this.store =
77
- store || new JsonlRolloutStore({ directory: this.directory, now });
77
+ store || createRolloutStore({ directory: this.directory, now });
78
78
  const thread = this.store.start({
79
79
  threadId: this.threadId,
80
80
  title: `Distributed Team Graph bridge ${this.queueId}`,
@@ -0,0 +1,54 @@
1
+ const MEMORY_MUTATION_EVENTS = new Set([
2
+ "memory.candidate.created",
3
+ "memory.activated",
4
+ "memory.reinforced",
5
+ "memory.superseded",
6
+ "memory.expired",
7
+ ]);
8
+
9
+ export function contextPlanCreatedNotification(plan) {
10
+ return {
11
+ method: "context/event",
12
+ params: { type: "context.plan.created", plan },
13
+ };
14
+ }
15
+
16
+ export function memoryRecalledNotification(result) {
17
+ return {
18
+ method: "memory/event",
19
+ params: { type: "memory.recalled", result },
20
+ };
21
+ }
22
+
23
+ export function memoryMutationNotification(mutation) {
24
+ if (!MEMORY_MUTATION_EVENTS.has(mutation?.event?.type)) return null;
25
+ return {
26
+ method: "memory/event",
27
+ params: {
28
+ type: mutation.event.type,
29
+ memory_id: mutation.record.memoryId,
30
+ revision: mutation.record.revision,
31
+ record_digest: mutation.record.digest,
32
+ record: mutation.record,
33
+ },
34
+ };
35
+ }
36
+
37
+ export function memoryDeletionNotification(receipt, operationId = receipt?.requestId) {
38
+ if (!receipt?.memoryId || !receipt?.recordDigest || !receipt?.revision) {
39
+ return null;
40
+ }
41
+ const purged = receipt.status === "purged";
42
+ return {
43
+ method: "memory/event",
44
+ params: {
45
+ type: purged ? "memory.purged" : "memory.deleted",
46
+ operation_id: operationId,
47
+ request_id: receipt.requestId || operationId,
48
+ memory_id: receipt.memoryId,
49
+ revision: receipt.revision,
50
+ record_digest: receipt.recordDigest,
51
+ ...(purged ? { receipt } : {}),
52
+ },
53
+ };
54
+ }
@@ -0,0 +1,115 @@
1
+ import path from "node:path";
2
+
3
+ import {
4
+ JsonlRolloutStore,
5
+ assertRolloutStore,
6
+ defaultRolloutStoreDirectory,
7
+ } from "./rollout-store.js";
8
+ import {
9
+ SqliteRolloutStore,
10
+ sqliteRolloutStoreAvailable,
11
+ } from "./sqlite-rollout-store.js";
12
+
13
+ export const ROLLOUT_STORE_BACKENDS = Object.freeze(["jsonl", "sqlite"]);
14
+ export const ROLLOUT_STORE_ENV = "CHAINLESSCHAIN_ROLLOUT_STORE";
15
+ export const ROLLOUT_STORE_PATH_ENV = "CHAINLESSCHAIN_ROLLOUT_STORE_PATH";
16
+
17
+ function factoryError(code, message, details = {}) {
18
+ const error = new Error(message);
19
+ error.name = "RolloutStoreFactoryError";
20
+ error.code = code;
21
+ Object.assign(error, details);
22
+ return error;
23
+ }
24
+
25
+ export function normalizeRolloutStoreBackend(value = null) {
26
+ const backend = String(value || "jsonl")
27
+ .trim()
28
+ .toLowerCase();
29
+ if (!ROLLOUT_STORE_BACKENDS.includes(backend)) {
30
+ throw factoryError(
31
+ "CC_ROLLOUT_BACKEND_UNSUPPORTED",
32
+ `unsupported rollout store backend: ${backend || "empty"}`,
33
+ { backend, supported: [...ROLLOUT_STORE_BACKENDS] },
34
+ );
35
+ }
36
+ return backend;
37
+ }
38
+
39
+ export function defaultSqliteRolloutStoreFilename() {
40
+ return path.join(
41
+ path.dirname(defaultRolloutStoreDirectory()),
42
+ "rollouts.sqlite",
43
+ );
44
+ }
45
+
46
+ function labelStore(store, backend, location) {
47
+ if (!Object.isExtensible(store)) return store;
48
+ for (const [key, value] of Object.entries({ backend, location })) {
49
+ if (!Object.prototype.hasOwnProperty.call(store, key)) {
50
+ Object.defineProperty(store, key, {
51
+ configurable: false,
52
+ enumerable: false,
53
+ writable: false,
54
+ value,
55
+ });
56
+ }
57
+ }
58
+ return store;
59
+ }
60
+
61
+ /**
62
+ * Resolve one physical adapter behind the canonical RolloutStore contract.
63
+ * A host-provided adapter is the extension seam for remote/synchronized stores;
64
+ * it is accepted only after the complete logical contract is present.
65
+ */
66
+ export function createRolloutStore({
67
+ backend = process.env[ROLLOUT_STORE_ENV] || "jsonl",
68
+ location = process.env[ROLLOUT_STORE_PATH_ENV] || null,
69
+ directory = null,
70
+ filename = null,
71
+ adapter = null,
72
+ now = Date.now,
73
+ } = {}) {
74
+ if (adapter) {
75
+ return labelStore(assertRolloutStore(adapter), "custom", location || null);
76
+ }
77
+
78
+ const normalizedBackend = normalizeRolloutStoreBackend(backend);
79
+ if (normalizedBackend === "jsonl") {
80
+ const resolvedDirectory = path.resolve(
81
+ directory || location || defaultRolloutStoreDirectory(),
82
+ );
83
+ return labelStore(
84
+ assertRolloutStore(
85
+ new JsonlRolloutStore({ directory: resolvedDirectory, now }),
86
+ ),
87
+ normalizedBackend,
88
+ resolvedDirectory,
89
+ );
90
+ }
91
+
92
+ if (!sqliteRolloutStoreAvailable()) {
93
+ throw factoryError(
94
+ "CC_ROLLOUT_SQLITE_UNAVAILABLE",
95
+ "SQLite rollout storage is unavailable in this Node runtime",
96
+ );
97
+ }
98
+ const resolvedFilename = path.resolve(
99
+ filename ||
100
+ (directory ? path.join(directory, "rollouts.sqlite") : null) ||
101
+ location ||
102
+ defaultSqliteRolloutStoreFilename(),
103
+ );
104
+ return labelStore(
105
+ assertRolloutStore(
106
+ new SqliteRolloutStore({ filename: resolvedFilename, now }),
107
+ ),
108
+ normalizedBackend,
109
+ resolvedFilename,
110
+ );
111
+ }
112
+
113
+ export function closeRolloutStore(store) {
114
+ if (store && typeof store.close === "function") store.close();
115
+ }