chainlesschain 0.166.10 → 0.166.14

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 (244) 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-C8SyFhOo.js} +1 -1
  5. package/src/assets/web-panel/assets/{ActionButton-CpeSttcu.js → ActionButton-Dup5gFK0.js} +1 -1
  6. package/src/assets/web-panel/assets/{Analytics-Ba1TNLG0.js → Analytics-8FyOWA7V.js} +3 -3
  7. package/src/assets/web-panel/assets/{AppLayout-xBy8EOeg.js → AppLayout-DBzdU9dg.js} +3 -3
  8. package/src/assets/web-panel/assets/{Artifacts-CJ_3TFb8.js → Artifacts-C_0Z8gNy.js} +1 -1
  9. package/src/assets/web-panel/assets/{Audit-DUATFCG3.js → Audit-Cf2a-58m.js} +1 -1
  10. package/src/assets/web-panel/assets/{BackgroundAgents-BRXYPIGp.js → BackgroundAgents-M7w-2zgB.js} +1 -1
  11. package/src/assets/web-panel/assets/{Backup-D8auLx7y.js → Backup-CCTHQXoL.js} +1 -1
  12. package/src/assets/web-panel/assets/{BaseInput-CBgdslQ3.js → BaseInput-DjXpeFwJ.js} +1 -1
  13. package/src/assets/web-panel/assets/{Chat-B32LvAiE.js → Chat-cAvchsJU.js} +5 -5
  14. package/src/assets/web-panel/assets/{ChatBubbleRenderer-CVfvAy-n.js → ChatBubbleRenderer-DvEvxlZv.js} +1 -1
  15. package/src/assets/web-panel/assets/{Checkbox-BwzBxOpC.js → Checkbox-DKs6qvOn.js} +1 -1
  16. package/src/assets/web-panel/assets/{Codegen-0U5vrg1H.js → Codegen-DlkA7b9X.js} +1 -1
  17. package/src/assets/web-panel/assets/{Col-dZ2i4aAj.js → Col-CkfdKhyJ.js} +1 -1
  18. package/src/assets/web-panel/assets/{Community-UVvpLr8c.js → Community-iNXMHzj6.js} +1 -1
  19. package/src/assets/web-panel/assets/{Compact-BDNEb1Bd.js → Compact-DQxPEd09.js} +1 -1
  20. package/src/assets/web-panel/assets/{Compliance-BrzQPxyS.js → Compliance-CSKvMCjs.js} +1 -1
  21. package/src/assets/web-panel/assets/{Cowork-BbgGsu-9.js → Cowork-CkWqazpD.js} +2 -2
  22. package/src/assets/web-panel/assets/{Cron-G321XPhp.js → Cron-k6W8IzhB.js} +2 -2
  23. package/src/assets/web-panel/assets/{Crosschain-CgLNUyMn.js → Crosschain-C8MS1OuY.js} +1 -1
  24. package/src/assets/web-panel/assets/{DID-BAfRj18q.js → DID-DJuCcgiQ.js} +2 -2
  25. package/src/assets/web-panel/assets/{Dashboard-BNIxA4TK.js → Dashboard-LeThKzp3.js} +2 -2
  26. package/src/assets/web-panel/assets/{Dropdown-BLAUmCAN.js → Dropdown-BvxwgpE4.js} +1 -1
  27. package/src/assets/web-panel/assets/{EmailListRenderer-CsnhTW22.js → EmailListRenderer-n3e_a1M3.js} +1 -1
  28. package/src/assets/web-panel/assets/{FamilyGuardDashboard-zcQ7Ip1n.js → FamilyGuardDashboard-509W6W6v.js} +1 -1
  29. package/src/assets/web-panel/assets/{Federation-KFwxodNU.js → Federation-xgZReQm0.js} +1 -1
  30. package/src/assets/web-panel/assets/{FormItemContext-3CYRLEHG.js → FormItemContext-jZOhKcQx.js} +1 -1
  31. package/src/assets/web-panel/assets/{GenericCardRenderer-D3d9D8L9.js → GenericCardRenderer-Jo0ULzHv.js} +1 -1
  32. package/src/assets/web-panel/assets/{Git-BJ202nJY.js → Git-BsRcyWQP.js} +2 -2
  33. package/src/assets/web-panel/assets/{Governance-ClnnXVQ-.js → Governance-JlpMYTAk.js} +1 -1
  34. package/src/assets/web-panel/assets/{Inference-DNU-PTkc.js → Inference-CUEz872-.js} +1 -1
  35. package/src/assets/web-panel/assets/{KnowledgeGraph-DJuinbuY.js → KnowledgeGraph-DgrvvEDU.js} +1 -1
  36. package/src/assets/web-panel/assets/{Logs-D4No-46s.js → Logs-Df-KY4U3.js} +2 -2
  37. package/src/assets/web-panel/assets/MarkdownRenderer-BEPDcSwz.js +1 -0
  38. package/src/assets/web-panel/assets/{Marketplace-Ba-KqRN3.js → Marketplace-kPZDTOeI.js} +1 -1
  39. package/src/assets/web-panel/assets/{McpTools-DVoxnPgE.js → McpTools-CRRzPqNX.js} +2 -2
  40. package/src/assets/web-panel/assets/{Memory-D_C8gzAZ.js → Memory-D6pNSkg9.js} +2 -2
  41. package/src/assets/web-panel/assets/{MobileBridge-DnzTPcDH.js → MobileBridge-g-pvtwRC.js} +1 -1
  42. package/src/assets/web-panel/assets/MobileProjects-Bzayfrfe.js +1 -0
  43. package/src/assets/web-panel/assets/{Mtc-CvEHmHId.js → Mtc-B7S3W-XL.js} +2 -2
  44. package/src/assets/web-panel/assets/{MtcAudit-VNJmWqmv.js → MtcAudit-B8OMEWVb.js} +2 -2
  45. package/src/assets/web-panel/assets/{Multisig-BO0x_Vsa.js → Multisig-CowRp7GH.js} +3 -3
  46. package/src/assets/web-panel/assets/{NLProgramming-CM2gI1UY.js → NLProgramming-BkQNyi4c.js} +1 -1
  47. package/src/assets/web-panel/assets/{Notes-CMc1HsML.js → Notes-Cm7gtkKz.js} +3 -3
  48. package/src/assets/web-panel/assets/{NotificationSettings-DGNmSKGM.js → NotificationSettings-CbPTVh9m.js} +1 -1
  49. package/src/assets/web-panel/assets/{OrderTableRenderer-Du-Kct3p.js → OrderTableRenderer-Dswi26mJ.js} +1 -1
  50. package/src/assets/web-panel/assets/{Organization-DRtRZjas.js → Organization-BkjQ9yy7.js} +4 -4
  51. package/src/assets/web-panel/assets/{Overflow-Dp4OeWsn.js → Overflow-DmRFXP7Y.js} +1 -1
  52. package/src/assets/web-panel/assets/{P2P-DXMJVls8.js → P2P-DQE1toAu.js} +2 -2
  53. package/src/assets/web-panel/assets/PdhVaultBrowser-BujyoDRG.js +7 -0
  54. package/src/assets/web-panel/assets/{Permissions-D1Hbb51o.js → Permissions-xSjfOaiU.js} +4 -4
  55. package/src/assets/web-panel/assets/{PersonalDataHub-BridiDhr.js → PersonalDataHub-B9ICLqVP.js} +3 -3
  56. package/src/assets/web-panel/assets/{Pipeline-B4bUNCm1.js → Pipeline-CUNwyN9E.js} +1 -1
  57. package/src/assets/web-panel/assets/{Privacy-BTu_HEqK.js → Privacy-SOoCricX.js} +1 -1
  58. package/src/assets/web-panel/assets/{ProjectInit-SVtL2hnt.js → ProjectInit-CSaFul0F.js} +2 -2
  59. package/src/assets/web-panel/assets/{ProjectSettings-B2Sh7JZ2.js → ProjectSettings-CueiB_oe.js} +2 -2
  60. package/src/assets/web-panel/assets/{Projects-BwU1xalW.js → Projects-BOeXvU7y.js} +1 -1
  61. package/src/assets/web-panel/assets/{Providers-BWdWQSDw.js → Providers-CTqf_31h.js} +1 -1
  62. package/src/assets/web-panel/assets/{QrScannerModal-Brzc-Sxb.js → QrScannerModal-C8ZP31E9.js} +1 -1
  63. package/src/assets/web-panel/assets/{QuickAsk-DIBz7FCe.js → QuickAsk-CPgn4713.js} +1 -1
  64. package/src/assets/web-panel/assets/{Recommend-CZ8RriIJ.js → Recommend-8_e0zw0i.js} +1 -1
  65. package/src/assets/web-panel/assets/{RemoteSession-CM0KJQ3t.js → RemoteSession-iT7lbGqw.js} +3 -3
  66. package/src/assets/web-panel/assets/{Reputation-D_wo8H0O.js → Reputation-B4q9SUOz.js} +1 -1
  67. package/src/assets/web-panel/assets/{Row-D1G1fD7N.js → Row-CA_nASyL.js} +1 -1
  68. package/src/assets/web-panel/assets/{RssFeed-dKCVtA0K.js → RssFeed-Cwb0E3yv.js} +2 -2
  69. package/src/assets/web-panel/assets/{Search-Be1D61xo.js → Search-D9iVsOxJ.js} +1 -1
  70. package/src/assets/web-panel/assets/{Security-IbNiR6OC.js → Security-DPLbYchG.js} +3 -3
  71. package/src/assets/web-panel/assets/{Services-nuHK8y8p.js → Services-DGMVL_LF.js} +2 -2
  72. package/src/assets/web-panel/assets/{Skeleton-DnM5jdnC.js → Skeleton-B_6kym0D.js} +1 -1
  73. package/src/assets/web-panel/assets/{Skills-DCTdoq_q.js → Skills-Ds6r0dXB.js} +1 -1
  74. package/src/assets/web-panel/assets/{Sla-DlWun-Ui.js → Sla-BLHAbBhb.js} +1 -1
  75. package/src/assets/web-panel/assets/{SpeechSettings-C19kv2sd.js → SpeechSettings-CZuddd14.js} +1 -1
  76. package/src/assets/web-panel/assets/{SyncSettings-CkQIR_Hu.js → SyncSettings-CdBq7oSl.js} +2 -2
  77. package/src/assets/web-panel/assets/{Tasks-DdbqOEbs.js → Tasks-DfT60Nyl.js} +1 -1
  78. package/src/assets/web-panel/assets/{Templates-B7GpIXeo.js → Templates-RLfsKy2V.js} +1 -1
  79. package/src/assets/web-panel/assets/{Tenant-ByEstFhY.js → Tenant-Cw8xCNLE.js} +1 -1
  80. package/src/assets/web-panel/assets/{Terminal-BKRVID1a.js → Terminal-BOUkNu4f.js} +2 -2
  81. package/src/assets/web-panel/assets/{TimelineRenderer-CNS3dHNv.js → TimelineRenderer-CgGZWaRm.js} +1 -1
  82. package/src/assets/web-panel/assets/{Tokens-BykqylCL.js → Tokens-CpwjVyir.js} +1 -1
  83. package/src/assets/web-panel/assets/{Trigger-ByNxq51W.js → Trigger-DL21H-eb.js} +1 -1
  84. package/src/assets/web-panel/assets/{Trust-BlrFsdaS.js → Trust-B3ffFclW.js} +1 -1
  85. package/src/assets/web-panel/assets/{UkeySign-Dg26A-sd.js → UkeySign-CkBeb5aI.js} +1 -1
  86. package/src/assets/web-panel/assets/{VideoEditing-C1wUxNn0.js → VideoEditing-U2iVaE3r.js} +1 -1
  87. package/src/assets/web-panel/assets/{Wallet-OphEUzI4.js → Wallet-CQk2wzYd.js} +4 -4
  88. package/src/assets/web-panel/assets/{WebAuthn-_8lL08hF.js → WebAuthn-DYIuIYzT.js} +5 -5
  89. package/src/assets/web-panel/assets/{WorkflowEditor-BnTuIvnP.js → WorkflowEditor-tg1c2mZQ.js} +1 -1
  90. package/src/assets/web-panel/assets/{chat-3N3VLQYr.js → chat-CtL61spq.js} +1 -1
  91. package/src/assets/web-panel/assets/{colors-Bo_G96gg.js → colors-DKpbeo8s.js} +1 -1
  92. package/src/assets/web-panel/assets/{compact-item-DjubfjI_.js → compact-item-gPZsrswt.js} +1 -1
  93. package/src/assets/web-panel/assets/{createContext-Cx_HSLCk.js → createContext-CfHlwzVr.js} +1 -1
  94. package/src/assets/web-panel/assets/devWarning-DdqnMhzi.js +1 -0
  95. package/src/assets/web-panel/assets/{hasIn-D5OjAOlA.js → hasIn-MV47g_6X.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-x7o-2T3S.js → index-6G0ETFTW.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-CqZq3zWr.js → index-BBw52sEl.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-C-4sfa0l.js → index-BN-wxSQ8.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-uAcJUJkx.js → index-BOyGUuBE.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-CC7RnaPP.js → index-BQp5M0s1.js} +1 -1
  101. package/src/assets/web-panel/assets/index-BcK8o4ke.js +1 -0
  102. package/src/assets/web-panel/assets/{index-CNmsP0Xf.js → index-BjlPD7GO.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-CVPDhmVH.js → index-C4lF-f_z.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-CRKk1JPX.js → index-C6nC_DyY.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-B905-Mcs.js → index-C9RF4ieu.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-3_CEBEEf.js → index-C9gtY4nG.js} +3 -3
  107. package/src/assets/web-panel/assets/{index-Y-H7j25u.js → index-CB1HnbNK.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-C5IwN9q3.js → index-CRv_uMLV.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-Q_vn0t8d.js → index-C_B9LiKs.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-Cz5tQ5PY.js → index-Cjv0kKCU.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-BgPb37tI.js → index-CmM9jqwe.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-Dbdr8tVi.js → index-CmPJpLoD.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-DrVjatPe.js → index-CzfxTSPW.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-C-_Cy0k_.js → index-D1XB5-t5.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-C8dPFFhy.js → index-DGtEBodr.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-UnpsQ6A0.js → index-DIeJmlAA.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-BxgIE4PD.js → index-DMMvlLp9.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-DlcbE0sX.js → index-DU4rZpiK.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-EZr3bvz2.js → index-D_Pl1GnW.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-BScGr1BY.js → index-Dd19vRwy.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-Ce8EWU6r.js → index-Ddcpj1El.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-CCjq3g32.js → index-Df9sWKpl.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-ydnEPOzZ.js → index-DfLyHCWi.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-C4MAnkl5.js → index-DnZ_zS1M.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-DXJqa1-I.js → index-DsH-i_3d.js} +1 -1
  126. package/src/assets/web-panel/assets/index-DvbAjyYI.js +1 -0
  127. package/src/assets/web-panel/assets/{index-DBvZhdCb.js → index-ExAGPAnX.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-DD1zSPZH.js → index-Rb7CRMw9.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-DE4XtzMl.js → index-Zvkt9xqi.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-CmLwI-Y8.js → index-bSFrAszw.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-HioDjvUF.js → index-fYcS7NS0.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-BvYo09C0.js → index-srBc9U_s.js} +1 -1
  133. package/src/assets/web-panel/assets/{index-Bj7S5IJw.js → index-xUlgG0Xe.js} +1 -1
  134. package/src/assets/web-panel/assets/{index-DaU60K3A.js → index-yxxXlqBA.js} +1 -1
  135. package/src/assets/web-panel/assets/{initDefaultProps-DurpENJY.js → initDefaultProps-BeOZoSZ4.js} +1 -1
  136. package/src/assets/web-panel/assets/{motion-CIh-z-gR.js → motion-BXE8VMKx.js} +1 -1
  137. package/src/assets/web-panel/assets/{move-Uc_yI2NA.js → move-I9sdvPGX.js} +1 -1
  138. package/src/assets/web-panel/assets/{mtc-parser-DUevj5wz.js → mtc-parser-d25zrJd0.js} +1 -1
  139. package/src/assets/web-panel/assets/{omit-85eMYyur.js → omit-D71V_T4e.js} +1 -1
  140. package/src/assets/web-panel/assets/{pickAttrs-AuxDD20F.js → pickAttrs-BNZKpIAR.js} +1 -1
  141. package/src/assets/web-panel/assets/{placementArrow-DOWn8dd1.js → placementArrow-jOcgxTTz.js} +1 -1
  142. package/src/assets/web-panel/assets/{responsiveObserve-CPxTWodH.js → responsiveObserve-pta_O8AU.js} +1 -1
  143. package/src/assets/web-panel/assets/{slide-BqvbGPjx.js → slide-Dlq6om7z.js} +1 -1
  144. package/src/assets/web-panel/assets/{statusUtils-BzXKkV8d.js → statusUtils-BnkO_yRv.js} +1 -1
  145. package/src/assets/web-panel/assets/{styleChecker-B2O7yRk3.js → styleChecker-p8NfWmcG.js} +1 -1
  146. package/src/assets/web-panel/assets/{useFlexGapSupport-DRWp7px1.js → useFlexGapSupport-KcjZZ5U7.js} +1 -1
  147. package/src/assets/web-panel/assets/{useFs-Dp0V7sjM.js → useFs-gqonDMWB.js} +1 -1
  148. package/src/assets/web-panel/assets/{usePersonalDataHub-CyCrG3ql.js → usePersonalDataHub-jIIfE4go.js} +1 -1
  149. package/src/assets/web-panel/assets/{vnode-CXhoFpFo.js → vnode-Dyo7fBrM.js} +1 -1
  150. package/src/assets/web-panel/assets/{zoom-0z3mtwEg.js → zoom-6l8BMg9W.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 +76 -23
  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/record-replay.js +772 -0
  162. package/src/commands/serve.js +94 -10
  163. package/src/commands/session.js +2 -3
  164. package/src/commands/skill.js +3 -0
  165. package/src/commands/team.js +7 -1
  166. package/src/data/changelog.json +41 -2
  167. package/src/gateways/ws/session-core-protocol.js +62 -3
  168. package/src/gateways/ws/session-protocol.js +123 -15
  169. package/src/gateways/ws/ws-agent-handler.js +157 -9
  170. package/src/gateways/ws/ws-session-gateway.js +204 -30
  171. package/src/generated/cc-agent-protocol.schema.json +2094 -4
  172. package/src/harness/prompt-compressor.js +5 -55
  173. package/src/lib/agent-sandbox.js +8 -2
  174. package/src/lib/agent-team/team-distributed-graph-bridge.js +3 -3
  175. package/src/lib/agent-team/team-message-tools.js +23 -5
  176. package/src/lib/app-server/context-memory-notifications.js +54 -0
  177. package/src/lib/app-server/rollout-store-factory.js +115 -0
  178. package/src/lib/app-server/rollout-store.js +310 -23
  179. package/src/lib/app-server/server.js +184 -7
  180. package/src/lib/app-server/sqlite-rollout-store.js +59 -16
  181. package/src/lib/auto-mode-config.js +26 -0
  182. package/src/lib/causal-observability.js +13 -1
  183. package/src/lib/context-memory-kernel/authority.js +95 -0
  184. package/src/lib/context-memory-kernel/durable-memory-port.js +296 -0
  185. package/src/lib/context-memory-kernel/index.js +8 -0
  186. package/src/lib/context-memory-kernel/jsonl-session-context-port.js +232 -0
  187. package/src/lib/context-memory-kernel/live-compaction.js +375 -0
  188. package/src/lib/context-memory-kernel/memory-service.js +667 -0
  189. package/src/lib/context-memory-kernel/message-adapter.js +451 -0
  190. package/src/lib/context-memory-kernel/privacy-purge-port.js +244 -0
  191. package/src/lib/context-memory-kernel/provider-context.js +192 -0
  192. package/src/lib/context-memory-kernel/runtime.js +61 -0
  193. package/src/lib/direct-model-usage.js +22 -18
  194. package/src/lib/graph-kernel/cutover-authority-resolver.js +4 -5
  195. package/src/lib/graph-kernel/cutover-ledger.js +2 -2
  196. package/src/lib/graph-kernel/event-store.js +3 -5
  197. package/src/lib/graph-kernel/migration-saga.js +2 -2
  198. package/src/lib/graph-kernel/production-cutover-evidence.js +8 -1
  199. package/src/lib/hierarchical-memory.js +22 -0
  200. package/src/lib/hook-audit-store.js +170 -0
  201. package/src/lib/hook-event-bus.cjs +0 -0
  202. package/src/lib/hook-manager.js +25 -83
  203. package/src/lib/hook-runtime-adapters.js +233 -0
  204. package/src/lib/hook-runtime-contract.cjs +291 -0
  205. package/src/lib/hook-runtime-contract.js +21 -0
  206. package/src/lib/hook-trust.js +210 -0
  207. package/src/lib/hooks-v2-producers.js +52 -6
  208. package/src/lib/hooks-v2-runtime.js +443 -178
  209. package/src/lib/llm-pricing.js +10 -0
  210. package/src/lib/memory-manager.js +29 -4
  211. package/src/lib/model-context-window.js +52 -0
  212. package/src/lib/permanent-memory.js +17 -0
  213. package/src/lib/plan-mode.js +8 -4
  214. package/src/lib/process-execution-broker/credential-transport.js +31 -0
  215. package/src/lib/process-execution-broker/index.js +282 -16
  216. package/src/lib/process-execution-broker/windows-sandbox-helper.dll +0 -0
  217. package/src/lib/process-execution-broker/windows-sandbox-helper.exe +0 -0
  218. package/src/lib/process-execution-broker/windows-sandbox.cs +7 -3
  219. package/src/lib/record-replay/browser-target-policy.js +406 -0
  220. package/src/lib/record-replay/index.js +4 -0
  221. package/src/lib/record-replay/playwright-ui-driver.js +83 -20
  222. package/src/lib/record-replay/playwright-ui-recorder.js +611 -0
  223. package/src/lib/record-replay/recorded-skill-package.js +486 -0
  224. package/src/lib/record-replay/recorded-skill-store.js +1166 -0
  225. package/src/lib/record-replay/skill-recorder.js +634 -64
  226. package/src/lib/runtime-usage-ledger.js +20 -0
  227. package/src/lib/session-consolidator.js +59 -0
  228. package/src/lib/session-core-singletons.js +17 -4
  229. package/src/lib/session-hooks.js +29 -2
  230. package/src/lib/session-transcript-migration.js +188 -0
  231. package/src/lib/settings-hook-events.cjs +37 -401
  232. package/src/lib/settings-hook-events.js +210 -8
  233. package/src/lib/settings-hooks.cjs +42 -83
  234. package/src/lib/ws-session-manager.js +4 -1
  235. package/src/repl/agent-repl.js +186 -53
  236. package/src/runtime/agent-core.js +376 -350
  237. package/src/runtime/headless-runner.js +112 -84
  238. package/src/runtime/headless-stream.js +131 -30
  239. package/src/assets/web-panel/assets/MarkdownRenderer-Dt8hH_qA.js +0 -1
  240. package/src/assets/web-panel/assets/MobileProjects-Jg2dVUc-.js +0 -1
  241. package/src/assets/web-panel/assets/PdhVaultBrowser-0jYeVmyY.js +0 -7
  242. package/src/assets/web-panel/assets/devWarning-BX944k9E.js +0 -1
  243. package/src/assets/web-panel/assets/index-C_9Jt_SR.js +0 -1
  244. package/src/assets/web-panel/assets/index-DL2EFx7m.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 },
@@ -260,8 +260,8 @@ export function normalizeAgentSandbox(value, options = {}) {
260
260
  export function normalizeAgentSandboxMode(mode, value, options = {}) {
261
261
  if (mode == null || mode === "") {
262
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.
263
+ // enables it. The platform process broker still applies its native
264
+ // boundary, but starting a normal agent must not require Docker.
265
265
  return normalizeAgentSandbox(value, options);
266
266
  }
267
267
  if (!AGENT_SANDBOX_MODES.includes(mode)) {
@@ -392,6 +392,9 @@ export function executeSandboxedShell(command, sandbox, options = {}) {
392
392
  timeout: options.timeout,
393
393
  maxBuffer: options.maxBuffer,
394
394
  windowsHide: true,
395
+ requirePersistentAudit: true,
396
+ auditRedactArgIndexes: [args.length - 1],
397
+ auditContext: options.auditContext,
395
398
  });
396
399
  if (result.error) {
397
400
  return {
@@ -461,6 +464,9 @@ function executeBubblewrapShell(command, sandbox, options, hostCwd, policy) {
461
464
  timeout: options.timeout,
462
465
  maxBuffer: options.maxBuffer,
463
466
  windowsHide: true,
467
+ requirePersistentAudit: true,
468
+ auditRedactArgIndexes: [args.length - 1],
469
+ auditContext: options.auditContext,
464
470
  });
465
471
  if (result.error) {
466
472
  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}`,
@@ -5,6 +5,7 @@ import {
5
5
  TEAM_MESSAGE_BRIDGE_MAX_WAIT_MS,
6
6
  TEAM_MESSAGE_BRIDGE_PROTOCOL,
7
7
  } from "./team-message-bridge.js";
8
+ import { resolveCredentialEnvironmentValue } from "../process-execution-broker/credential-transport.js";
8
9
 
9
10
  export const TEAM_MESSAGE_TOOL_NAMES = Object.freeze([
10
11
  "team_send",
@@ -177,21 +178,38 @@ function descriptor(name) {
177
178
  });
178
179
  }
179
180
 
180
- export function resolveTeamMessageToolBundle({
181
+ export async function resolveTeamMessageToolBundle({
181
182
  env = process.env,
182
183
  call = callTeamMessageBridge,
184
+ resolveCredential = resolveCredentialEnvironmentValue,
183
185
  } = {}) {
184
186
  const endpoint = env.CC_TEAM_MESSAGE_BRIDGE_ENDPOINT;
185
- const token = env.CC_TEAM_MESSAGE_BRIDGE_TOKEN;
187
+ const tokenReference = env.CC_CRED_REF_CC_TEAM_MESSAGE_BRIDGE_TOKEN;
186
188
  const protocol = Number(env.CC_TEAM_MESSAGE_BRIDGE_PROTOCOL);
187
- if (!endpoint && !token && !env.CC_TEAM_MESSAGE_BRIDGE_PROTOCOL) return null;
189
+ if (
190
+ !endpoint &&
191
+ !env.CC_TEAM_MESSAGE_BRIDGE_TOKEN &&
192
+ !tokenReference &&
193
+ !env.CC_TEAM_MESSAGE_BRIDGE_PROTOCOL
194
+ ) {
195
+ return null;
196
+ }
188
197
  if (
189
198
  typeof endpoint !== "string" ||
190
199
  !endpoint ||
200
+ protocol !== TEAM_MESSAGE_BRIDGE_PROTOCOL
201
+ ) {
202
+ const error = new Error("Team message bridge environment is invalid");
203
+ error.code = "TEAM_MESSAGE_BRIDGE_CONFIG_INVALID";
204
+ throw error;
205
+ }
206
+ const token = await resolveCredential("CC_TEAM_MESSAGE_BRIDGE_TOKEN", {
207
+ env,
208
+ });
209
+ if (
191
210
  typeof token !== "string" ||
192
211
  token.length !== 64 ||
193
- !/^[a-f0-9]{64}$/u.test(token) ||
194
- protocol !== TEAM_MESSAGE_BRIDGE_PROTOCOL
212
+ !/^[a-f0-9]{64}$/u.test(token)
195
213
  ) {
196
214
  const error = new Error("Team message bridge environment is invalid");
197
215
  error.code = "TEAM_MESSAGE_BRIDGE_CONFIG_INVALID";
@@ -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
+ }