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
@@ -65,11 +65,21 @@ export const PRICE_TABLE = Object.freeze({
65
65
  { match: "o1", in: 15, out: 60 },
66
66
  ],
67
67
  deepseek: [
68
+ // DeepSeek V4 launch-list rates for the versioned 2026-04 model ids.
69
+ // Keep these ahead of the legacy aliases so formal budget gates never
70
+ // treat the current V4 models as unpriced remote usage.
71
+ { match: "deepseek-v4-pro", in: 0.435, out: 0.87 },
72
+ { match: "deepseek-v4-flash", in: 0.14, out: 0.28 },
68
73
  { match: "reasoner", in: 0.55, out: 2.19 },
69
74
  { match: "chat", in: 0.27, out: 1.1 },
70
75
  ],
71
76
  // Volcengine Doubao — rough USD conversion of public RMB list pricing.
72
77
  volcengine: [
78
+ // Third-party DeepSeek V4 ids exposed by Ark use the same token-accounting
79
+ // shape. Pricing them explicitly is required by USD-capped Agent/Team runs;
80
+ // falling through to the Doubao patterns would fail closed as unpriced.
81
+ { match: "deepseek-v4-pro", in: 0.435, out: 0.87 },
82
+ { match: "deepseek-v4-flash", in: 0.14, out: 0.28 },
73
83
  // Doubao Seed 2.0 family (2026, e.g. doubao-seed-2-0-lite-260215) is
74
84
  // natively multimodal. Rates ≈ official CNY ÷ ~7.2 (lite ≤32k is 0.6/3.6
75
85
  // CNY → $0.08/$0.50); the generic "seed" rate below underprices 2.0 output.
@@ -8,6 +8,18 @@
8
8
  import fs from "fs";
9
9
  import path from "path";
10
10
  import { likePrefix, escapeLike } from "./sql-like.js";
11
+ import {
12
+ assertLegacyMutationAllowed,
13
+ resolveCliContextMemoryCutover,
14
+ } from "./context-memory-kernel/authority.js";
15
+
16
+ function assertLegacyMemoryManagerMutationAllowed(operation) {
17
+ assertLegacyMutationAllowed(
18
+ resolveCliContextMemoryCutover({
19
+ scopeKey: `cli:legacy-memory-manager:${operation}`,
20
+ }),
21
+ );
22
+ }
11
23
 
12
24
  /**
13
25
  * Atomically write a UTF-8 file: a crash mid-write must not truncate MEMORY.md
@@ -57,6 +69,15 @@ function ensureMemoryTable(db) {
57
69
  `);
58
70
  }
59
71
 
72
+ function memoryTableExists(db) {
73
+ const row = db
74
+ .prepare(
75
+ "SELECT name FROM sqlite_master WHERE type = 'table' AND name = 'memory_entries'",
76
+ )
77
+ .get();
78
+ return Boolean(row);
79
+ }
80
+
60
81
  /**
61
82
  * Get the memory directory path
62
83
  */
@@ -68,6 +89,7 @@ export function getMemoryDir(dataDir) {
68
89
  * Add an entry to memory (stored in DB)
69
90
  */
70
91
  export function addMemory(db, content, options = {}) {
92
+ assertLegacyMemoryManagerMutationAllowed("add");
71
93
  ensureMemoryTable(db);
72
94
 
73
95
  if (!content || !content.trim()) {
@@ -142,7 +164,9 @@ export function listMemory(db, options = {}) {
142
164
  * ordered deterministically so the same DB exports identically.
143
165
  */
144
166
  export function exportMemory(db) {
145
- ensureMemoryTable(db);
167
+ // Canonical cutover calls this as a one-time read-only importer. Do not
168
+ // create a legacy table merely because no legacy data exists.
169
+ if (!memoryTableExists(db)) return [];
146
170
  return db
147
171
  .prepare(
148
172
  `SELECT id, content, category, importance, source, created_at, updated_at
@@ -162,6 +186,7 @@ function _nowSqlite() {
162
186
  * updated_at. Never aborts mid-batch; returns {ok, imported, failed, errors}.
163
187
  */
164
188
  export function importMemory(db, entries) {
189
+ assertLegacyMemoryManagerMutationAllowed("import");
165
190
  ensureMemoryTable(db);
166
191
  if (!Array.isArray(entries)) {
167
192
  throw new Error("importMemory: entries must be a JSON array");
@@ -208,6 +233,7 @@ export function importMemory(db, entries) {
208
233
  * Delete a memory entry
209
234
  */
210
235
  export function deleteMemory(db, id) {
236
+ assertLegacyMemoryManagerMutationAllowed("delete");
211
237
  ensureMemoryTable(db);
212
238
 
213
239
  // Try exact match first, then prefix match
@@ -228,6 +254,7 @@ export function deleteMemory(db, id) {
228
254
  * Append to today's daily note
229
255
  */
230
256
  export function appendDailyNote(memoryDir, content) {
257
+ assertLegacyMemoryManagerMutationAllowed("append-daily-note");
231
258
  ensureMemoryDirs(memoryDir);
232
259
 
233
260
  const today = new Date().toISOString().slice(0, 10); // YYYY-MM-DD
@@ -260,8 +287,6 @@ export function getDailyNote(memoryDir, date) {
260
287
  * List available daily notes
261
288
  */
262
289
  export function listDailyNotes(memoryDir, options = {}) {
263
- ensureMemoryDirs(memoryDir);
264
-
265
290
  const dailyDir = path.join(memoryDir, "daily");
266
291
  const limit = Math.max(1, parseInt(options.limit) || 30);
267
292
 
@@ -291,13 +316,13 @@ export function listDailyNotes(memoryDir, options = {}) {
291
316
  * Read or update the MEMORY.md file (long-term knowledge)
292
317
  */
293
318
  export function getMemoryFile(memoryDir) {
294
- ensureMemoryDirs(memoryDir);
295
319
  const filePath = path.join(memoryDir, "MEMORY.md");
296
320
  if (!fs.existsSync(filePath)) return "";
297
321
  return fs.readFileSync(filePath, "utf8");
298
322
  }
299
323
 
300
324
  export function updateMemoryFile(memoryDir, content) {
325
+ assertLegacyMemoryManagerMutationAllowed("update-memory-file");
301
326
  ensureMemoryDirs(memoryDir);
302
327
  const filePath = path.join(memoryDir, "MEMORY.md");
303
328
  atomicWriteFileSync(filePath, content);
@@ -0,0 +1,52 @@
1
+ export const CONTEXT_WINDOWS = Object.freeze({
2
+ "qwen2.5:7b": 32768,
3
+ "qwen2.5:14b": 32768,
4
+ "qwen2.5-coder:14b": 32768,
5
+ "qwen2:7b": 32768,
6
+ "llama3:8b": 8192,
7
+ "mistral:7b": 32768,
8
+ "codellama:7b": 16384,
9
+ "gpt-4o": 128000,
10
+ "gpt-4o-mini": 128000,
11
+ "gpt-4-turbo": 128000,
12
+ "gpt-3.5-turbo": 16385,
13
+ o1: 200000,
14
+ "claude-opus-4-6": 200000,
15
+ "claude-sonnet-4-6": 200000,
16
+ "claude-haiku-4-5-20251001": 200000,
17
+ "deepseek-chat": 64000,
18
+ "deepseek-coder": 64000,
19
+ "deepseek-reasoner": 64000,
20
+ "qwen-turbo": 131072,
21
+ "qwen-plus": 131072,
22
+ "qwen-max": 32768,
23
+ "gemini-2.0-flash": 1048576,
24
+ "gemini-2.0-pro": 1048576,
25
+ "gemini-1.5-flash": 1048576,
26
+ "moonshot-v1-auto": 131072,
27
+ "moonshot-v1-8k": 8192,
28
+ "moonshot-v1-32k": 32768,
29
+ "moonshot-v1-128k": 131072,
30
+ "doubao-seed-1-6-251015": 32768,
31
+ "doubao-seed-2-1-pro-260628": 32768,
32
+ _provider_defaults: Object.freeze({
33
+ ollama: 32768,
34
+ openai: 128000,
35
+ anthropic: 200000,
36
+ deepseek: 64000,
37
+ dashscope: 131072,
38
+ gemini: 1048576,
39
+ kimi: 131072,
40
+ volcengine: 32768,
41
+ minimax: 32768,
42
+ mistral: 32768,
43
+ }),
44
+ });
45
+
46
+ export function getContextWindow(model, provider) {
47
+ if (model && CONTEXT_WINDOWS[model]) return CONTEXT_WINDOWS[model];
48
+ if (provider && CONTEXT_WINDOWS._provider_defaults[provider]) {
49
+ return CONTEXT_WINDOWS._provider_defaults[provider];
50
+ }
51
+ return 32768;
52
+ }
@@ -9,6 +9,18 @@
9
9
  import fs from "fs";
10
10
  import path from "path";
11
11
  import { BM25Search } from "./bm25-search.js";
12
+ import {
13
+ assertLegacyMutationAllowed,
14
+ resolveCliContextMemoryCutover,
15
+ } from "./context-memory-kernel/authority.js";
16
+
17
+ function assertLegacyPermanentMemoryMutationAllowed(operation) {
18
+ assertLegacyMutationAllowed(
19
+ resolveCliContextMemoryCutover({
20
+ scopeKey: `cli:legacy-permanent-memory:${operation}`,
21
+ }),
22
+ );
23
+ }
12
24
 
13
25
  // Exported for test injection
14
26
  export const _deps = {
@@ -66,6 +78,7 @@ export class CLIPermanentMemory {
66
78
  */
67
79
  initialize() {
68
80
  if (this._initialized) return;
81
+ assertLegacyPermanentMemoryMutationAllowed("initialize");
69
82
  this._initialized = true;
70
83
 
71
84
  // Ensure directories
@@ -120,6 +133,7 @@ export class CLIPermanentMemory {
120
133
  */
121
134
  appendDailyNote(content) {
122
135
  if (!this.memoryDir || !content) return null;
136
+ assertLegacyPermanentMemoryMutationAllowed("append-daily-note");
123
137
 
124
138
  try {
125
139
  const today = new Date().toISOString().slice(0, 10);
@@ -154,6 +168,7 @@ export class CLIPermanentMemory {
154
168
  */
155
169
  updateMemoryFile(section, content) {
156
170
  if (!this.memoryDir) return null;
171
+ assertLegacyPermanentMemoryMutationAllowed("update-memory-file");
157
172
 
158
173
  try {
159
174
  const filePath = _deps.path.join(this.memoryDir, "MEMORY.md");
@@ -228,6 +243,7 @@ export class CLIPermanentMemory {
228
243
  */
229
244
  autoSummarize(sessionMessages) {
230
245
  if (!sessionMessages || sessionMessages.length < 4) return [];
246
+ assertLegacyPermanentMemoryMutationAllowed("auto-summarize");
231
247
 
232
248
  const facts = [];
233
249
 
@@ -281,6 +297,7 @@ export class CLIPermanentMemory {
281
297
  */
282
298
  _storeEntry(content, source = "auto", importance = 0.5) {
283
299
  if (!this.db) return null;
300
+ assertLegacyPermanentMemoryMutationAllowed("store-entry");
284
301
  try {
285
302
  const id = `pm-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
286
303
  this.db
@@ -1530,10 +1530,14 @@ export class PlanModeManager extends EventEmitter {
1530
1530
  */
1531
1531
  _fireHook(eventName, context) {
1532
1532
  if (!this._hookDb) return;
1533
- // Dynamic import to avoid circular deps
1534
- import("./hook-manager.js")
1535
- .then(({ executeHooks }) => {
1536
- executeHooks(this._hookDb, eventName, context).catch(() => {});
1533
+ // Dynamic import avoids a constructor-time dependency while keeping the
1534
+ // legacy SQLite registry behind the canonical Hooks v2 adapter.
1535
+ import("./hooks-v2-producers.js")
1536
+ .then(({ executeHooksV2Event }) => {
1537
+ executeHooksV2Event(eventName, context, {
1538
+ hookDb: this._hookDb,
1539
+ matchTarget: context?.target || eventName,
1540
+ }).catch(() => {});
1537
1541
  })
1538
1542
  .catch(() => {});
1539
1543
  }
@@ -375,4 +375,35 @@ export async function resolveCredentialRefOverTransport(refId, options = {}) {
375
375
  });
376
376
  }
377
377
 
378
+ /**
379
+ * Resolve one named environment credential without copying plaintext back into
380
+ * process.env. Direct launches keep accepting the original environment value;
381
+ * brokered launches exchange the short-lived, target-bound reference that the
382
+ * ProcessExecutionBroker placed in CC_CRED_REF_<NAME>.
383
+ */
384
+ export async function resolveCredentialEnvironmentValue(key, options = {}) {
385
+ if (!/^[A-Z][A-Z0-9_]*$/u.test(String(key || ""))) {
386
+ throw transportError(
387
+ "CC_CREDENTIAL_INVALID_REQUEST",
388
+ "Credential environment key is invalid",
389
+ );
390
+ }
391
+ const env = options.env || process.env;
392
+ const value = env[key];
393
+ const refId = env[`CC_CRED_REF_${key}`];
394
+ const hasValue = typeof value === "string" && value.length > 0;
395
+ const hasReference = typeof refId === "string" && refId.length > 0;
396
+ if (hasValue && hasReference) {
397
+ throw transportError(
398
+ "CC_CREDENTIAL_INVALID_REQUEST",
399
+ "Credential environment contains both plaintext and a broker reference",
400
+ );
401
+ }
402
+ if (hasValue) return value;
403
+ if (!hasReference) return null;
404
+ const resolveReference =
405
+ options.resolveReference || resolveCredentialRefOverTransport;
406
+ return await resolveReference(refId, { env });
407
+ }
408
+
378
409
  export { TRANSPORT_VERSION };