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
@@ -5,7 +5,7 @@
5
5
  "a2a": "Usage: chainlesschain a2a [options] [command]\n\nA2A Protocol — agent-to-agent communication\n\nOptions:\n -h, --help display help for command\n\nCommands:\n register [options] <name> Register an agent card\n discover [options] Discover agents by capability or skill\n submit [options] <agent-id> <input> Submit a task to an agent\n status [options] <task-id> Get task status\n complete <task-id> <output> Mark a task as completed\n fail <task-id> <error> Mark a task as failed\n peers [options] List all registered agents\n cards [options] List all agent cards with details\n negotiate [options] <agent-id> <capabilities> Check if an agent supports required capabilities\n task-statuses [options] List V2 task statuses (Phase 81)\n card-statuses [options] List V2 card statuses (Phase 81)\n subscription-types [options] List V2 subscription types (Phase 81)\n negotiation-results [options] List V2 negotiation outcomes (Phase 81)\n validate-card [options] <name> Validate an agent card against the A2A schema\n set-card-status [options] <cardId> <status> Transition a card between active/inactive/expired\n card-status [options] <cardId> Show a card's V2 status\n send-task-v2 [options] <agentId> <input> Submit a V2 task (in-memory, with optional timeout)\n start-working [options] <taskId> Transition a V2 task to working\n request-input [options] <taskId> <prompt> Request user input while a V2 task is working\n provide-input [options] <taskId> <input> Provide input for an input-required V2 task\n complete-task-v2 [options] <taskId> [output] Complete a V2 task (from working only)\n fail-task-v2 [options] <taskId> [error] Fail a V2 task with an error message\n cancel-task [options] <taskId> [reason] Cancel a non-terminal V2 task\n check-timeout [options] <taskId> Check V2 task timeout (auto-fails if past deadline)\n task-v2 [options] <taskId> Show a V2 task snapshot\n tasks-v2 [options] List V2 tasks\n negotiate-v2 [options] <cardJson> Phase 81 capability negotiation against an agent card\n stats-v2 [options] Aggregate V2 stats (tasks + cards + subscriptions)\n enums-v2 Show V2 governance enums\n register-agent-v2 [options] Register an a2a agent profile (pending)\n activate-agent-v2 <id> Activate agent\n suspend-agent-v2 <id> Suspend agent\n retire-agent-v2 <id> Retire agent (terminal)\n touch-agent-v2 <id> Refresh lastTouchedAt\n get-agent-v2 <id> Get agent\n list-agents-v2 List agents\n create-message-v2 [options] Create an a2a message (queued)\n start-message-v2 <id> Transition message to sending\n deliver-message-v2 <id> Transition message to delivered\n fail-message-v2 [options] <id> Fail message\n cancel-message-v2 [options] <id> Cancel message\n get-message-v2 <id> Get message\n list-messages-v2 List messages\n set-max-active-agents-v2 <n> Set per-owner active cap\n set-max-pending-messages-v2 <n> Set per-agent pending cap\n set-agent-idle-ms-v2 <n> Set idle threshold\n set-message-stuck-ms-v2 <n> Set stuck threshold\n auto-suspend-idle-agents-v2 Auto-suspend idle agents\n auto-fail-stuck-messages-v2 Auto-fail stuck sending messages\n gov-stats-v2 V2 governance aggregate stats\n help [command] display help for command\n",
6
6
  "activitypub": "Usage: chainlesschain activitypub|ap [options] [command]\n\nActivityPub C2S bridge — actors, outbox/inbox, Follow/Create/Like/Announce\n\nOptions:\n -h, --help display help for command\n\nCommands:\n actor Manage local and remote ActivityPub actors\n publish [options] <content> Publish a Create(Note) activity to the actor's outbox\n follow [options] <target> Publish a Follow activity (target: username or actor URL)\n accept [options] <follow-activity-id> Accept a pending Follow request\n unfollow [options] <target> Publish an Undo(Follow) activity\n like [options] <object-id> Publish a Like activity for an object URL\n announce [options] <object-id> Publish an Announce (boost) activity for an object URL\n outbox [options] <username> List an actor's outbox activities\n inbox [options] <username> List an actor's inbox activities\n deliver [options] <username> <activity-json> Simulate inbox delivery — push a JSON activity into a local actor's inbox\n followers [options] <username> List followers of an actor\n search [options] <query> Search actors and/or notes in the local Fediverse index\n following [options] <username> List who this actor is following\n enums-v2 Show V2 enums\n register-actor-v2 [options] Register an AP actor profile (pending)\n activate-actor-v2 <id> Activate actor\n suspend-actor-v2 <id> Suspend actor\n deactivate-actor-v2 <id> Deactivate actor (terminal)\n touch-actor-v2 <id> Refresh lastTouchedAt\n get-actor-v2 <id> Get actor\n list-actors-v2 List actors\n create-activity-v2 [options] Create an AP activity (queued)\n start-activity-v2 <id> Transition activity to delivering\n deliver-activity-v2 <id> Transition activity to delivered\n fail-activity-v2 [options] <id> Fail activity\n cancel-activity-v2 [options] <id> Cancel activity\n get-activity-v2 <id> Get activity\n list-activities-v2 List activities\n set-max-active-actors-v2 <n> Set per-owner active cap\n set-max-pending-activities-v2 <n> Set per-actor pending cap\n set-actor-idle-ms-v2 <n> Set idle threshold\n set-activity-stuck-ms-v2 <n> Set stuck threshold\n auto-suspend-idle-actors-v2 Auto-suspend idle actors\n auto-fail-stuck-activities-v2 Auto-fail stuck delivering activities\n gov-stats-v2 V2 governance aggregate stats\n help [command] display help for command\n",
7
7
  "agenda": "Usage: chainlesschain agenda [options] [command]\n\nFire agent-scheduled wakeups / crons / monitors (persisted by the `schedule`\ntool)\n\nOptions:\n -h, --help display help for command\n\nCommands:\n list [options] List all scheduled entries\n run [options] Fire every entry that is due now\n cancel [options] <id> Remove a scheduled entry by id\n prune [options] Remove finished entries (fired / matched / exhausted /\n expired)\n help [command] display help for command\n",
8
- "agent": "Usage: chainlesschain agent|a [options] [task...]\n\nStart an agentic AI session (reads/writes files, runs commands)\n\nArguments:\n task Headless task 鈥?when given (or with -p /\n piped stdin), runs non-interactively\n\nOptions:\n --model <model> Model name\n --provider <provider> LLM provider (ollama, openai,\n volcengine, deepseek, ...)\n --base-url <url> API base URL\n --api-key <key> API key\n --think [level] Enable Anthropic extended thinking\n (level: think | hard | ultra; Anthropic\n models only)\n --ultrathink Maximum Anthropic extended thinking (=\n --think ultra)\n --thinking-budget <n> Thinking token budget for legacy Claude\n models (Sonnet 4.5 / Opus 4.0-4.5 /\n older); clamped below max_tokens.\n Adaptive-thinking models ignore it (they\n use --think's effort). Requires\n --think/--ultrathink.\n --image <path> Attach an image (png/jpg/jpeg/gif/webp)\n to the prompt for a vision-capable model\n (headless; repeatable)\n --vision-model <id> Model to use when an image is attached\n (default: config llm.visionModel or\n doubao-seed-2-0-lite-260215)\n --session <id> Resume a previous agent session\n -c, --continue Resume the most recent session (no id\n needed 鈥?claude --continue parity)\n --resume [id] Resume a session by id (no id 鈫?most\n recent 鈥?claude --resume parity)\n --fork-session When resuming, branch into a NEW session\n id and leave the original untouched\n (claude --fork-session parity)\n --fork-request-id <key> Stable idempotency key for\n --fork-session retries (omit for a new\n fork each invocation)\n --add-dir <dir> Extra working directory the agent may\n read/search/edit (repeatable)\n --checkpoint Auto-snapshot the work tree before each\n mutating tool (DEFAULT inside a git\n repo; cc checkpoint restore to roll\n back)\n --no-checkpoint Disable auto-checkpointing (it is on by\n default inside git repos)\n --managed-checkpoint Checkpoint bounded mutating tools with\n Process Broker; unavailable writer\n lifetimes are reported as coverage none\n --managed-checkpoint-state <dir> Durable managed-checkpoint state\n directory (must be outside the\n workspace)\n --managed-checkpoint-exclude <path> Explicit workspace path excluded from\n managed checkpoints; repeatable and\n reported as partial coverage\n --safe-mode Run bare: disable project memory,\n settings hooks, memory recall, IDE\n context, status line and update notice\n (permission rules STAY active)\n --bare Everything --safe-mode disables PLUS\n skills, plugins and MCP/IDE auto-connect\n — minimal fast surface for scripted\n calls (explicit --mcp-config still\n loads; permission rules STAY active)\n --ephemeral No session persistence: nothing is\n written to the session store (headless;\n a --resume id still replays history\n read-only)\n --capabilities Print a machine-readable capability\n manifest (JSON: protocol version, tools,\n permission modes, exit codes) and exit\n --disable-slash-commands Interactive REPL: don't dispatch '/'\n input as slash commands — it reaches the\n model verbatim (/exit and /quit stay\n live)\n --ax-screen-reader Screen-reader friendly output: no ANSI\n colors, no in-place status line repaints\n (also CC_SCREEN_READER=1)\n --worktree Run this session in a fresh git worktree\n (isolated branch; auto-removed when the\n session changes nothing)\n --no-worktree Background Git task: explicitly share\n the current work tree (intended for\n read-only tasks; writable runs are not\n isolated)\n --unattended Enable fail-closed shell action policy\n for scheduled/event-driven runs\n --unattended-allow <classes> Comma-separated action classes\n explicitly allowed for unattended shell\n runs\n --sandbox [image] Run shell commands in an ephemeral\n Docker sandbox (network disabled by\n default)\n --sandbox-mode <mode> Sandbox posture: off | workspace-write |\n strict (explicit isolation modes fail\n closed)\n --sandbox-network Allow network access inside --sandbox\n --otlp <file> Write the agent run's OpenTelemetry\n spans (model/tool/retry) as OTLP/JSON to\n <file>\n --otlp-content Include prompt/response CONTENT in\n --otlp spans (off by default; content is\n redacted unless this is set)\n --auto-rewake When an async `asyncRewake` hook (e.g. a\n background test) fails at turn end,\n re-engage the agent to fix it (bounded\n by --max-rewakes)\n --auto-pin Force-pin the original task (first user\n turn) through compaction (ON by default;\n disable with CC_AUTO_PIN=0 or config\n context.autoPin=false)\n --max-rewakes <n> Max auto-rewake re-drives per run\n (default 1); implies --auto-rewake\n --bg, --background Start as a detached background agent and\n return its id immediately\n --agent-id <id> Agent id for scoped memory recall\n --recall-limit <n> Top-K memories to inject into system\n prompt\n --recall-query <q> Query string for startup memory recall\n --no-recall-memory Disable startup memory recall\n --vim Start the interactive REPL in vim-mode\n line editing (toggle later with /vim; or\n CC_VIM=1)\n --no-stream Disable streamed response rendering\n --no-park-on-exit Close the session-core handle on exit\n instead of parking it\n --bundle <path> Agent bundle directory (may execute\n local MCP commands from mcp.json)\n -p, --print [prompt] Headless: run one non-interactive turn\n and exit\n --output-format <fmt> Headless output: text | json |\n stream-json (default: \"text\")\n --max-turns <n> Cap agent loop iterations (headless)\n --json-schema <file> Headless structured output: final reply\n must be JSON validating against this\n schema (invalid replies retried)\n --allowed-tools <list> Comma/space-separated tool allow-list\n (headless)\n --disallowed-tools <list> Comma/space-separated tool deny-list\n (headless)\n --permission-mode <mode> manual | auto | dontAsk | default | plan\n | acceptEdits | bypassPermissions (plan\n headless-only)\n --no-file-refs Disable @path file-reference expansion\n in the prompt (headless)\n --no-slash-macros Disable /name custom-command\n (.claude/commands) expansion in the\n prompt (headless)\n --system-prompt <text> Replace the built-in system prompt\n (literal text or @file)\n --append-system-prompt <text> Append extra guidance to the system\n prompt (literal text or @file)\n --no-project-memory Skip auto-loaded project memory (cc.md /\n CLAUDE.md / AGENTS.md hierarchy,\n .chainlesschain/rules.md,\n .claude/rules/*.md) — a lean system\n prompt for token-tight surfaces (e.g.\n IDE chat). The agent can still read\n those files with tools when it needs\n them.\n --output-style <name> Apply a named output-style persona\n (.claude/output-styles/<name>.md or a\n built-in: concise | explanatory |\n learning)\n --input-format <fmt> Headless input: text | stream-json\n (NDJSON user events on stdin,\n multi-turn) (default: \"text\")\n --trace-id <id> Correlation id stamped as `trace_id` on\n every stream-json output line (also read\n from CC_TRACE_ID). Lets an IDE/bridge\n trace one run across its own logs, the\n CLI, transcripts and diagnostics.\n Auto-generated per run when omitted.\n --fallback-model <model> Backup model(s) to try in order when the\n primary fails (transient error or\n model-not-found). Repeatable or\n comma-separated; up to 3. A\n `provider:model` entry (e.g.\n openai:gpt-4o) falls back\n cross-provider, using that provider's\n API key from its env var (skipped if\n unset — never reuses the primary key).\n Defaults to config llm.fallbackModels.\n --include-partial-messages Emit live assistant-text deltas as\n stream_event lines (requires\n --output-format stream-json)\n --include-hook-events Emit redacted hook and subagent\n lifecycle events (requires\n --output-format stream-json)\n --goal [id] Bind a cc goal into the run (id, or omit\n the value to auto-resolve the active\n goal)\n --goal-assess After the run, ask the model to assess\n goal progress and persist it (opt-in;\n costs one extra completion; requires\n --goal)\n --goal-condition <spec> Session completion condition; re-drives\n outer turns until met. Prefix\n exit-zero:/file-exists:/contains:/regex:\n (deterministic) or model:<desc>\n (model-judged)\n --max-outer-turns <n> Max outer re-drive turns for\n --goal-condition (default 10, hard cap\n 100)\n --goal-max-tokens <n> Token budget across --goal-condition\n outer turns\n --goal-max-cost <usd> Cost budget (USD) across\n --goal-condition outer turns\n --goal-max-time <ms> Wall-clock budget (ms) across\n --goal-condition outer turns\n --mcp-config <file> Load ad-hoc MCP servers from a JSON file\n for this run (headless); their tools\n become callable (mcp__<server>__<tool>)\n --no-mcp Don't auto-connect MCP servers\n registered with `cc mcp add\n --auto-connect` (--mcp-config still\n loads)\n --ide Force-enable IDE bridge auto-connect:\n discover a running editor's MCP server\n via ~/.chainlesschain/ide/*.json\n (default: auto inside an IDE integrated\n terminal)\n --no-ide Disable IDE bridge auto-connect\n --pdh Force-enable PDH bridge auto-connect:\n discover the Android app's\n device-capability MCP server via\n ~/.chainlesschain/pdh-bridge/*.json\n (default: auto when\n CHAINLESSCHAIN_PDH_PORT is set)\n --no-pdh Disable PDH bridge auto-connect\n --jetbrains Force-enable IntelliJ IDEA built-in MCP\n (IDEA >= 2025.2) as server `idea`\n (default: auto when the ChainlessChain\n JetBrains plugin injects\n CHAINLESSCHAIN_JETBRAINS_MCP_URL)\n --no-jetbrains Disable IDEA built-in MCP auto-connect\n --interactive-approvals Stream mode: confirm-tier approvals\n become approval_request/approval\n stdin-stdout events instead of failing\n closed (chat-panel UX)\n --permission-prompt-tool <tool> Defer tool approvals to an MCP tool\n (mcp__<server>__<tool>; requires\n --mcp-config) instead of headless\n fail-closed\n --remote-control Route confirm-tier approvals to paired\n mobile/web devices — requires a relay or\n explicit LAN opt-in; headless waits\n fail-closed, interactive races the\n terminal prompt (also /remote-control)\n --remote-control-allow-lan Permit --remote-control to expose its\n authenticated WS endpoint on a trusted\n LAN\n --channels <list> Inbound channels for the interactive\n session (webhook[:port],telegram) —\n external events enter as user turns;\n webhook needs its bearer token, telegram\n needs channels.telegram.allowFrom\n --settings <file> Merge an extra\n .claude/settings.json-shaped file for\n this run: permission rules\n (allow/ask/deny) + native config\n overrides (model, env)\n --max-budget-usd <amount> Hard USD spend cap: stop the run before\n the next paid LLM call once the\n estimated cost reaches this (headless;\n uses the cc cost price table)\n --session-budget Enable the durable session-wide budget\n authority (headless; requires\n --session/--resume/--continue)\n --session-max-concurrent <n> Durable session cap for concurrent child\n work\n --session-max-spawns <n> Durable session cap for total child-work\n admissions\n --session-max-depth <n> Durable session cap for child-agent\n nesting depth\n --session-max-turns <n> Durable session cap for model turns\n across resumes\n --session-max-tokens <n> Durable session cap for\n provider-reported tokens across resumes\n --session-max-cost-usd <amount> Durable session cost cap across resumes\n (requires priced provider usage)\n --session-max-wall-ms <n> Durable session cap for cumulative\n active wall time\n --session-max-tool-ms <n> Durable session cap for aggregate tool\n execution time\n --observability-workspace <id> Persist a workspace scope on new session\n authority for causal reports\n --observability-team <id> Persist a team scope on new session\n authority for causal reports\n --observability-policy <id> Persist a policy scope on new session\n authority for causal reports\n --strict-mcp-config Use ONLY --mcp-config servers; ignore\n registered (cc mcp add) and IDE-bridge\n MCP for a reproducible tool surface\n --project-mcp Opt in to loading a project-scoped\n .mcp.json (default off; a checked-in\n .mcp.json can spawn commands)\n --replay-user-messages Stream-input mode: echo each accepted\n stdin user message back as a `user`\n event (transcript/correlation)\n --allow-dangerous-bypass Bypass all permission prompts in\n headless mode (DANGEROUS: auto-approves\n all tool calls) (default: false)\n -y, --yolo Alias for --allow-dangerous-bypass\n (default: false)\n --dangerously-skip-permissions Alias for --allow-dangerous-bypass\n (default: false)\n -h, --help display help for command\n",
8
+ "agent": "Usage: chainlesschain agent|a [options] [task...]\n\nStart an agentic AI session (reads/writes files, runs commands)\n\nArguments:\n task Headless task 鈥?when given (or with -p /\n piped stdin), runs non-interactively\n\nOptions:\n --model <model> Model name\n --provider <provider> LLM provider (ollama, openai,\n volcengine, deepseek, ...)\n --base-url <url> API base URL\n --api-key <key> API key\n --think [level] Enable Anthropic extended thinking\n (level: think | hard | ultra; Anthropic\n models only)\n --ultrathink Maximum Anthropic extended thinking (=\n --think ultra)\n --thinking-budget <n> Thinking token budget for legacy Claude\n models (Sonnet 4.5 / Opus 4.0-4.5 /\n older); clamped below max_tokens.\n Adaptive-thinking models ignore it (they\n use --think's effort). Requires\n --think/--ultrathink.\n --image <path> Attach an image (png/jpg/jpeg/gif/webp)\n to the prompt for a vision-capable model\n (headless; repeatable)\n --vision-model <id> Model to use when an image is attached\n (default: config llm.visionModel or\n doubao-seed-2-0-lite-260215)\n --session <id> Resume a previous agent session\n -c, --continue Resume the most recent session (no id\n needed 鈥?claude --continue parity)\n --resume [id] Resume a session by id (no id 鈫?most\n recent 鈥?claude --resume parity)\n --fork-session When resuming, branch into a NEW session\n id and leave the original untouched\n (claude --fork-session parity)\n --fork-request-id <key> Stable idempotency key for\n --fork-session retries (omit for a new\n fork each invocation)\n --add-dir <dir> Extra working directory the agent may\n read/search/edit (repeatable)\n --checkpoint Auto-snapshot the work tree before each\n mutating tool (DEFAULT inside a git\n repo; cc checkpoint restore to roll\n back)\n --no-checkpoint Disable auto-checkpointing (it is on by\n default inside git repos)\n --managed-checkpoint Checkpoint bounded mutating tools with\n Process Broker; unavailable writer\n lifetimes are reported as coverage none\n --managed-checkpoint-state <dir> Durable managed-checkpoint state\n directory (must be outside the\n workspace)\n --managed-checkpoint-exclude <path> Explicit workspace path excluded from\n managed checkpoints; repeatable and\n reported as partial coverage\n --safe-mode Run bare: disable project memory,\n settings hooks, memory recall, IDE\n context, status line and update notice\n (permission rules STAY active)\n --bare Everything --safe-mode disables PLUS\n skills, plugins and MCP/IDE auto-connect\n — minimal fast surface for scripted\n calls (explicit --mcp-config still\n loads; permission rules STAY active)\n --ephemeral No session persistence: nothing is\n written to the session store (headless;\n a --resume id still replays history\n read-only)\n --capabilities Print a machine-readable capability\n manifest (JSON: protocol version, tools,\n permission modes, exit codes) and exit\n --disable-slash-commands Interactive REPL: don't dispatch '/'\n input as slash commands — it reaches the\n model verbatim (/exit and /quit stay\n live)\n --ax-screen-reader Screen-reader friendly output: no ANSI\n colors, no in-place status line repaints\n (also CC_SCREEN_READER=1)\n --worktree Run this session in a fresh git worktree\n (isolated branch; auto-removed when the\n session changes nothing)\n --no-worktree Background Git task: explicitly share\n the current work tree (intended for\n read-only tasks; writable runs are not\n isolated)\n --unattended Enable fail-closed shell action policy\n for scheduled/event-driven runs\n --unattended-allow <classes> Comma-separated action classes\n explicitly allowed for unattended shell\n runs\n --sandbox [image] Select the sandbox image/engine\n configuration (workspace-write and\n network-off are the default posture)\n --sandbox-mode <mode> Sandbox posture: off | workspace-write |\n strict (default: workspace-write;\n isolation modes fail closed)\n --sandbox-network Allow network access inside --sandbox\n --otlp <file> Write the agent run's OpenTelemetry\n spans (model/tool/retry) as OTLP/JSON to\n <file>\n --otlp-content Include prompt/response CONTENT in\n --otlp spans (off by default; content is\n redacted unless this is set)\n --auto-rewake When an async `asyncRewake` hook (e.g. a\n background test) fails at turn end,\n re-engage the agent to fix it (bounded\n by --max-rewakes)\n --auto-pin Force-pin the original task (first user\n turn) through compaction (ON by default;\n disable with CC_AUTO_PIN=0 or config\n context.autoPin=false)\n --max-rewakes <n> Max auto-rewake re-drives per run\n (default 1); implies --auto-rewake\n --bg, --background Start as a detached background agent and\n return its id immediately\n --agent-id <id> Agent id for scoped memory recall\n --recall-limit <n> Top-K memories to inject into system\n prompt\n --recall-query <q> Query string for startup memory recall\n --no-recall-memory Disable startup memory recall\n --vim Start the interactive REPL in vim-mode\n line editing (toggle later with /vim; or\n CC_VIM=1)\n --no-stream Disable streamed response rendering\n --no-park-on-exit Close the session-core handle on exit\n instead of parking it\n --bundle <path> Agent bundle directory (may execute\n local MCP commands from mcp.json)\n -p, --print [prompt] Headless: run one non-interactive turn\n and exit\n --output-format <fmt> Headless output: text | json |\n stream-json (default: \"text\")\n --max-turns <n> Cap agent loop iterations (headless)\n --json-schema <file> Headless structured output: final reply\n must be JSON validating against this\n schema (invalid replies retried)\n --allowed-tools <list> Comma/space-separated tool allow-list\n (headless)\n --disallowed-tools <list> Comma/space-separated tool deny-list\n (headless)\n --permission-mode <mode> manual | auto | dontAsk | default | plan\n | acceptEdits | bypassPermissions (plan\n headless-only)\n --no-file-refs Disable @path file-reference expansion\n in the prompt (headless)\n --no-slash-macros Disable /name custom-command\n (.claude/commands) expansion in the\n prompt (headless)\n --system-prompt <text> Replace the built-in system prompt\n (literal text or @file)\n --append-system-prompt <text> Append extra guidance to the system\n prompt (literal text or @file)\n --no-project-memory Skip auto-loaded project memory (cc.md /\n CLAUDE.md / AGENTS.md hierarchy,\n .chainlesschain/rules.md,\n .claude/rules/*.md) — a lean system\n prompt for token-tight surfaces (e.g.\n IDE chat). The agent can still read\n those files with tools when it needs\n them.\n --output-style <name> Apply a named output-style persona\n (.claude/output-styles/<name>.md or a\n built-in: concise | explanatory |\n learning)\n --input-format <fmt> Headless input: text | stream-json\n (NDJSON user events on stdin,\n multi-turn) (default: \"text\")\n --trace-id <id> Correlation id stamped as `trace_id` on\n every stream-json output line (also read\n from CC_TRACE_ID). Lets an IDE/bridge\n trace one run across its own logs, the\n CLI, transcripts and diagnostics.\n Auto-generated per run when omitted.\n --fallback-model <model> Backup model(s) to try in order when the\n primary fails (transient error or\n model-not-found). Repeatable or\n comma-separated; up to 3. A\n `provider:model` entry (e.g.\n openai:gpt-4o) falls back\n cross-provider, using that provider's\n API key from its env var (skipped if\n unset — never reuses the primary key).\n Defaults to config llm.fallbackModels.\n --include-partial-messages Emit live assistant-text deltas as\n stream_event lines (requires\n --output-format stream-json)\n --include-hook-events Emit redacted hook and subagent\n lifecycle events (requires\n --output-format stream-json)\n --goal [id] Bind a cc goal into the run (id, or omit\n the value to auto-resolve the active\n goal)\n --goal-assess After the run, ask the model to assess\n goal progress and persist it (opt-in;\n costs one extra completion; requires\n --goal)\n --goal-condition <spec> Session completion condition; re-drives\n outer turns until met. Prefix\n exit-zero:/file-exists:/contains:/regex:\n (deterministic) or model:<desc>\n (model-judged)\n --max-outer-turns <n> Max outer re-drive turns for\n --goal-condition (default 10, hard cap\n 100)\n --goal-max-tokens <n> Token budget across --goal-condition\n outer turns\n --goal-max-cost <usd> Cost budget (USD) across\n --goal-condition outer turns\n --goal-max-time <ms> Wall-clock budget (ms) across\n --goal-condition outer turns\n --mcp-config <file> Load ad-hoc MCP servers from a JSON file\n for this run (headless); their tools\n become callable (mcp__<server>__<tool>)\n --no-mcp Don't auto-connect MCP servers\n registered with `cc mcp add\n --auto-connect` (--mcp-config still\n loads)\n --ide Force-enable IDE bridge auto-connect:\n discover a running editor's MCP server\n via ~/.chainlesschain/ide/*.json\n (default: auto inside an IDE integrated\n terminal)\n --no-ide Disable IDE bridge auto-connect\n --pdh Force-enable PDH bridge auto-connect:\n discover the Android app's\n device-capability MCP server via\n ~/.chainlesschain/pdh-bridge/*.json\n (default: auto when\n CHAINLESSCHAIN_PDH_PORT is set)\n --no-pdh Disable PDH bridge auto-connect\n --jetbrains Force-enable IntelliJ IDEA built-in MCP\n (IDEA >= 2025.2) as server `idea`\n (default: auto when the ChainlessChain\n JetBrains plugin injects\n CHAINLESSCHAIN_JETBRAINS_MCP_URL)\n --no-jetbrains Disable IDEA built-in MCP auto-connect\n --interactive-approvals Stream mode: confirm-tier approvals\n become approval_request/approval\n stdin-stdout events instead of failing\n closed (chat-panel UX)\n --permission-prompt-tool <tool> Defer tool approvals to an MCP tool\n (mcp__<server>__<tool>; requires\n --mcp-config) instead of headless\n fail-closed\n --remote-control Route confirm-tier approvals to paired\n mobile/web devices — requires a relay or\n explicit LAN opt-in; headless waits\n fail-closed, interactive races the\n terminal prompt (also /remote-control)\n --remote-control-allow-lan Permit --remote-control to expose its\n authenticated WS endpoint on a trusted\n LAN\n --channels <list> Inbound channels for the interactive\n session (webhook[:port],telegram) —\n external events enter as user turns;\n webhook needs its bearer token, telegram\n needs channels.telegram.allowFrom\n --settings <file> Merge an extra\n .claude/settings.json-shaped file for\n this run: permission rules\n (allow/ask/deny) + native config\n overrides (model, env)\n --max-budget-usd <amount> Hard USD spend cap: stop the run before\n the next paid LLM call once the\n estimated cost reaches this (headless;\n uses the cc cost price table)\n --session-budget Enable the durable session-wide budget\n authority (headless; requires\n --session/--resume/--continue)\n --session-max-concurrent <n> Durable session cap for concurrent child\n work\n --session-max-spawns <n> Durable session cap for total child-work\n admissions\n --session-max-depth <n> Durable session cap for child-agent\n nesting depth\n --session-max-turns <n> Durable session cap for model turns\n across resumes\n --session-max-tokens <n> Durable session cap for\n provider-reported tokens across resumes\n --session-max-cost-usd <amount> Durable session cost cap across resumes\n (requires priced provider usage)\n --session-max-wall-ms <n> Durable session cap for cumulative\n active wall time\n --session-max-tool-ms <n> Durable session cap for aggregate tool\n execution time\n --observability-workspace <id> Persist a workspace scope on new session\n authority for causal reports\n --observability-team <id> Persist a team scope on new session\n authority for causal reports\n --observability-policy <id> Persist a policy scope on new session\n authority for causal reports\n --strict-mcp-config Use ONLY --mcp-config servers; ignore\n registered (cc mcp add) and IDE-bridge\n MCP for a reproducible tool surface\n --project-mcp Opt in to loading a project-scoped\n .mcp.json (default off; a checked-in\n .mcp.json can spawn commands)\n --replay-user-messages Stream-input mode: echo each accepted\n stdin user message back as a `user`\n event (transcript/correlation)\n --allow-dangerous-bypass Bypass all permission prompts in\n headless mode (DANGEROUS: auto-approves\n all tool calls) (default: false)\n -y, --yolo Alias for --allow-dangerous-bypass\n (default: false)\n --dangerously-skip-permissions Alias for --allow-dangerous-bypass\n (default: false)\n -h, --help display help for command\n",
9
9
  "agent-network": "Usage: chainlesschain agent-network|anet [options] [command]\n\nDecentralized Agent Network (Phase 24) — DID / registry / credentials / task\nrouting\n\nOptions:\n -h, --help display help for command\n\nCommands:\n config [options] Show network constants & reputation weights\n dimensions [options] List reputation dimensions\n task-statuses [options] List task lifecycle statuses\n did-create [options] Create an Agent DID (Ed25519 + DID document)\n did-resolve [options] <did> Resolve DID → DID document\n dids [options] List Agent DIDs\n did-deactivate [options] <did> Deactivate a DID (also forces registry offline)\n sign [options] <did> <data> Sign data with agent's Ed25519 key\n verify [options] <did> <data> <signature> Verify a signature from an agent\n register [options] <did> <orgId> Register an Agent in the federated registry\n unregister [options] <did> Remove an Agent from the registry\n heartbeat [options] <did> Bump last_heartbeat (forces online)\n discover [options] Discover agents (capability / org / status)\n sweep [options] Mark stale online agents offline\n peer-add [options] <peerId> Add/update a Kademlia peer (k-bucket auto-computed)\n peer-remove [options] <peerId> Remove a peer\n peers [options] List peers (optionally by k-bucket)\n auth-start [options] <did> Issue an auth challenge for a DID\n auth-complete [options] <sessionId> <signature> Complete auth with signature over challenge\n auth-validate [options] <token> Validate a session token (returns agentDid or exits 1)\n auth-sessions [options] List auth sessions\n credential-issue [options] <issuerDid> <subjectDid> Issue a VC with HMAC/Ed25519 proof\n credential-verify [options] <id> Verify a VC (signature + expiry + revocation)\n credential-revoke [options] <id> Revoke a credential\n credential-show [options] <id> Show a credential\n credentials [options] List credentials (filter by subject/issuer/status/type)\n task-route [options] <sourceOrg> <taskType> Route task → pick best-rep agent matching capability\n task-show [options] <taskId> Show a task\n task-status [options] <taskId> <status> Update task status (terminal states set completedAt)\n task-cancel [options] <taskId> Cancel a task (sets CANCELLED + reason)\n tasks [options] List tasks\n rep-update [options] <did> <dimension> <score> Record a reputation observation\n rep-show [options] <did> Show reputation summary (weighted total + per-dim avg)\n rep-history [options] <did> Show reputation history (newest first)\n rep-top [options] Top agents by dimension (or total)\n stats [options] Network-level statistics\n agent-maturities-v2 List V2 agent maturity states\n task-lifecycles-v2 List V2 task lifecycle states\n stats-v2 V2 agent-network stats\n get-max-active-agents-v2 Get max active agents per network (V2)\n set-max-active-agents-v2 <n> Set max active agents per network (V2)\n get-max-pending-tasks-v2 Get max pending tasks per agent (V2)\n set-max-pending-tasks-v2 <n> Set max pending tasks per agent (V2)\n get-agent-idle-ms-v2 Get agent idle threshold (V2)\n set-agent-idle-ms-v2 <ms> Set agent idle threshold (V2)\n get-task-stuck-ms-v2 Get task stuck threshold (V2)\n set-task-stuck-ms-v2 <ms> Set task stuck threshold (V2)\n active-agent-count-v2 <networkId> Active agent count for network (V2)\n pending-task-count-v2 <agentId> Pending task count for agent (V2)\n register-agent-v2 [options] <id> Register a V2 agent\n get-agent-v2 <id> Get a V2 agent\n list-agents-v2 [options] List V2 agents\n set-agent-status-v2 <id> <next> Set V2 agent status\n activate-agent-v2 <id> Activate a V2 agent\n suspend-agent-v2 <id> Suspend a V2 agent\n revoke-agent-v2 <id> Revoke a V2 agent\n touch-agent-v2 <id> Touch a V2 agent\n create-task-v2 [options] <id> Create a V2 task\n get-task-v2 <id> Get a V2 task\n list-tasks-v2 [options] List V2 tasks\n set-task-status-v2 <id> <next> Set V2 task status\n start-task-v2 <id> Start a V2 task\n complete-task-v2 <id> Complete a V2 task\n fail-task-v2 <id> Fail a V2 task\n cancel-task-v2 <id> Cancel a V2 task\n auto-suspend-idle-agents-v2 Auto-suspend idle V2 agents\n auto-fail-stuck-tasks-v2 Auto-fail stuck V2 tasks\n help [command] display help for command\n",
10
10
  "agents": "Usage: chainlesschain agents [options] [command]\n\nUser-defined subagents (.claude/agents/*.md)\n\nOptions:\n -h, --help display help for command\n\nCommands:\n background|bg [options] List background agent sessions\n logs [options] <id> Print recent output from a background agent\n view [options] <id> Show a detailed background agent view\n stop [options] <id> Stop a running background agent\n rename [options] <id> <title...> Rename a background agent session\n list|ls [options] List discovered subagents (project +\n personal)\n show [options] <name> Show an agent's metadata + system prompt\n run [options] <name> [task...] Run a task headlessly as the named subagent\n new [options] <name> Scaffold a new agent file (project-native\n .chainlesschain/agents/)\n help [command] display help for command\n",
11
11
  "android": "Usage: chainlesschain android [options] [command]\n\nAndroid-native bridge: ContentResolver / SAF / Accessibility / Shizuku / root\n(Plan A A7)\n\nOptions:\n -h, --help display help for command\n\nCommands:\n caps [options] Probe what bridge capabilities are available on this\n device\n contacts ContentResolver: contacts\n sms ContentResolver: SMS\n calls ContentResolver: call log\n app PackageManager: app inventory + Intent\n fs SAF / sandbox filesystem\n a11y Accessibility Service\n shizuku Shizuku ADB-like privileges\n root Magisk root su\n perms [options] <name> Check (and request) a runtime permission\n help [command] display help for command\n",
@@ -32,7 +32,7 @@
32
32
  "codegen": "Usage: chainlesschain codegen [options] [command]\n\nCode generation agent (Phase 86)\n\nOptions:\n -h, --help display help for command\n\nCommands:\n templates [options] List scaffold templates\n severities [options] List review severity levels\n rules [options] List security rules\n platforms [options] List CI/CD platforms\n generate [options] Record a code generation session\n show [options] <id> Show generation details\n list [options] List code generations\n review [options] Run heuristic code review\n review-show [options] <id> Show review details\n reviews [options] List code reviews\n scaffold [options] Record a scaffold generation\n scaffold-show [options] <id> Show scaffold details\n scaffolds [options] List scaffolds\n stats [options] Code agent statistics\n agent-maturities-v2 [options] List V2 agent maturity states\n gen-jobs-v2 [options] List V2 generation-job states\n default-max-active-agents-per-owner\n max-active-agents-per-owner\n set-max-active-agents-per-owner <n>\n default-max-running-jobs-per-owner\n max-running-jobs-per-owner\n set-max-running-jobs-per-owner <n>\n default-agent-idle-ms\n agent-idle-ms\n set-agent-idle-ms <ms>\n default-job-stuck-ms\n job-stuck-ms\n set-job-stuck-ms <ms>\n active-agent-count [options]\n running-job-count [options]\n register-agent-v2 [options] <agent-id>\n agent-v2 <agent-id>\n set-agent-maturity-v2 [options] <agent-id> <status>\n activate-agent [options] <agent-id>\n deprecate-agent [options] <agent-id>\n retire-agent [options] <agent-id>\n touch-agent-invocation <agent-id>\n enqueue-gen-job-v2 [options] <job-id>\n gen-job-v2 <job-id>\n set-gen-job-status-v2 [options] <job-id> <status>\n start-gen-job [options] <job-id>\n succeed-gen-job [options] <job-id>\n fail-gen-job [options] <job-id>\n cancel-gen-job [options] <job-id>\n auto-retire-idle-agents\n auto-fail-stuck-gen-jobs\n stats-v2\n help [command] display help for command\n",
33
33
  "collab": "Usage: chainlesschain collab [options] [command]\n\nCollaboration governance — decisions, voting, autonomy levels, task assignment\n\nOptions:\n -h, --help display help for command\n\nCommands:\n decision-types [options] List known decision types\n strategies [options] List conflict resolution strategies\n metrics [options] List quality metrics\n priorities [options] List priority levels\n permissions [options] List permission tiers (L0..L4)\n propose [options] <type> <proposal> Propose a governance decision (type: task_assignment|resource_allocation|conflict_resolution|policy_update|autonomy_level)\n decisions [options] List governance decisions\n show [options] <decision-id> Show full details of a decision\n vote [options] <decision-id> <agent-id> <vote> Cast a vote (vote: approve|reject|abstain)\n tally [options] <decision-id> Tally votes and transition decision status\n execute <decision-id> Mark an approved decision as executed\n set-level [options] <agent-id> <level> Set an agent's autonomy level (0..4)\n agent [options] <agent-id> Show agent autonomy level\n agents [options] List agents with autonomy levels\n match [options] <required-skills-json> <agent-skills-json> Compute skill match score (inputs are JSON file paths; required: [{name,requiredLevel,weight}], agent: {skillName: level})\n optimize [options] <tasks-json> <agents-json> Optimize task assignment (tasks: [{id,urgency,importance,complexity,dependencies,requiredSkills}], agents: [{id,skills,currentLoad,maxCapacity}])\n agent-maturities-cg-v2 List agent maturity states (V2)\n proposal-lifecycles-v2 List proposal lifecycle states (V2)\n stats-v2 Collaboration Governance V2 stats\n max-active-agents-per-realm [options] Get/set max active agents per realm (V2)\n max-voting-proposals-per-proposer [options] Get/set max voting proposals per proposer (V2)\n agent-idle-ms-cg [options] Get/set agent idle threshold ms (V2)\n proposal-stuck-ms [options] Get/set proposal stuck threshold ms (V2)\n active-agent-count-cg [options] Count active agents for realm (V2)\n voting-proposal-count [options] Count voting proposals for proposer (V2)\n register-agent-cg-v2 [options] <id> Register a CG agent V2 (provisional)\n agent-cg-v2 <id> Show CG agent V2\n list-agents-cg-v2 [options] List CG agents V2\n set-agent-maturity-cg-v2 [options] <id> <status> Transition CG agent V2 to status\n activate-agent-cg [options] <id> CG agent → active (V2)\n suspend-agent-cg [options] <id> CG agent → suspended (V2)\n retire-agent-cg [options] <id> CG agent → retired (V2)\n touch-agent-cg <id> Update lastSeenAt (V2)\n create-proposal-v2 [options] <id> Create a proposal V2 (draft)\n proposal-v2 <id> Show proposal V2\n list-proposals-v2 [options] List proposals V2\n set-proposal-status-v2 [options] <id> <status> Transition proposal V2 to status\n start-voting-v2 [options] <id> Proposal → voting (V2)\n approve-proposal-v2 [options] <id> Proposal → approved (V2)\n reject-proposal-v2 [options] <id> Proposal → rejected (V2)\n withdraw-proposal-v2 [options] <id> Proposal → withdrawn (V2)\n auto-retire-idle-agents-cg Bulk auto-retire idle agents past threshold (V2)\n auto-withdraw-stuck-proposals Bulk auto-withdraw voting proposals past threshold (V2)\n help [command] display help for command\n",
34
34
  "command": "Usage: chainlesschain command|cmd [options] [command]\n\nUser-defined slash-command macros (.claude/commands/*.md)\n\nOptions:\n -h, --help display help for command\n\nCommands:\n list|ls [options] List discovered command macros (project +\n personal)\n show [options] <name> Show a command's metadata and template body\n run [options] <name> [args...] Expand a command template and run it\n headlessly\n new [options] <name> Scaffold a new command file (project-native\n .chainlesschain/commands/)\n help [command] display help for command\n",
35
- "compact": "Usage: chainlesschain compact [options] <session-id>\n\nCompact a stored session into a structured handoff (persists for --resume)\n\nOptions:\n -m, --model <model> Model for adaptive context-window sizing (default:\n session's recorded model)\n -p, --provider <provider> Provider for adaptive sizing (default: session's\n recorded provider)\n --max-tokens <n> Override the token threshold (skips adaptive)\n --max-messages <n> Override the message-count threshold (skips\n adaptive)\n --dry-run Preview the reduction without writing\n --offline Disable provider summarization and stay\n deterministic\n --base-url <url> Provider base URL for semantic compaction\n --json Output as JSON\n -h, --help display help for command\n",
35
+ "compact": "Usage: chainlesschain compact [options] <session-id>\n\nCompact a stored session into a structured handoff (persists for --resume)\n\nOptions:\n -m, --model <model> Model for adaptive context-window sizing (default:\n session's recorded model)\n -p, --provider <provider> Provider for adaptive sizing (default: session's\n recorded provider)\n --max-tokens <n> Override the token threshold (skips adaptive)\n --max-messages <n> Override the message-count threshold (skips\n adaptive)\n --dry-run Preview the reduction without writing\n --offline Disable provider summarization and stay\n deterministic\n --base-url <url> Provider base URL for semantic compaction\n --operation-id <id> Stable idempotency key (default: derived from\n session head)\n --json Output as JSON\n -h, --help display help for command\n",
36
36
  "complete": "Usage: chainlesschain complete [options]\n\nInline code completion (FIM) for IDE ghost-text: reads {prefix,suffix,language}\nJSON on stdin, prints the code to insert.\n\nOptions:\n --provider <provider> override the LLM provider\n --model <model> override the model\n --base-url <url> override the provider base URL\n --api-key <key> override the API key\n --json output {completion,model,provider} as JSON\n -h, --help display help for command\n",
37
37
  "compliance": "Usage: chainlesschain compliance [options] [command]\n\nCompliance management — evidence, reports, scanning, policies\n\nOptions:\n -h, --help display help for command\n\nCommands:\n evidence [options] <framework> Collect compliance evidence (gdpr, soc2, hipaa, iso27001)\n report [options] <framework> Generate compliance report (frameworks: soc2, iso27001, gdpr, hipaa)\n frameworks [options] List supported report frameworks\n classify [options] <content> Classify data sensitivity\n scan [options] <framework> Scan compliance posture against policies\n policies [options] List compliance policies\n check-access [options] <resource> <action> <role> Check RBAC access permission\n threat-intel Threat-intelligence IoC store — STIX 2.1 import, list, match\n ueba User and Entity Behavior Analytics over audit_log events\n evidence-statuses-v2 List evidence V2 lifecycle states\n policy-statuses-v2 List policy V2 lifecycle states\n report-statuses-v2 List report V2 lifecycle states\n severities-v2 List V2 severity buckets\n frameworks-v2 List V2 supported frameworks\n policy-types-v2 List V2 supported policy types\n default-max-active-policies Show default max-active-policies cap\n max-active-policies Show current max-active-policies cap\n set-max-active-policies <n> Set max-active-policies cap\n default-evidence-retention-ms Show default evidence retention (ms)\n evidence-retention-ms Show current evidence retention (ms)\n set-evidence-retention-ms <ms> Set evidence retention (ms)\n default-report-retention-ms Show default report retention (ms)\n report-retention-ms Show current report retention (ms)\n set-report-retention-ms <ms> Set report retention (ms)\n active-policy-count [options] Show current active-policy count\n register-evidence-v2 [options] <evidence-id> Register a new V2 evidence entry (tagged COLLECTED)\n evidence-status-v2 <evidence-id> Show V2 evidence lifecycle entry\n set-evidence-status-v2 [options] <evidence-id> <status> Transition V2 evidence lifecycle (collected/verified/rejected/expired)\n auto-expire-evidence Bulk-flip stale evidence to EXPIRED\n register-policy-v2 [options] <policy-id> Register a new V2 policy entry (tagged DRAFT)\n policy-status-v2 <policy-id> Show V2 policy lifecycle entry\n set-policy-status-v2 [options] <policy-id> <status> Transition V2 policy lifecycle (draft/active/suspended/deprecated)\n activate-policy <policy-id> Activate a V2 policy (DRAFT→ACTIVE, enforces max-active cap)\n register-report-v2 [options] <report-id> Register a new V2 report entry (tagged PENDING)\n report-status-v2 <report-id> Show V2 report lifecycle entry\n set-report-status-v2 [options] <report-id> <status> Transition V2 report lifecycle (pending/generating/published/archived)\n publish-report [options] <report-id> Publish a V2 report (pending→generating→published)\n auto-archive-stale-reports Bulk-flip stale published reports to ARCHIVED\n stats-v2 V2 compliance stats (all-enum-key zero-initialized)\n fwrep-enums-v2 Show V2 enums (fw maturity + report lifecycle)\n fwrep-config-v2 Show V2 config thresholds\n fwrep-set-max-active-v2 <n> Set max active fws per owner\n fwrep-set-max-pending-v2 <n> Set max pending reports per fw\n fwrep-set-fw-idle-ms-v2 <n> Set fw idle threshold (ms)\n fwrep-set-report-stuck-ms-v2 <n> Set report stuck threshold (ms)\n fwrep-register-v2 [options] <id> <owner> Register V2 compliance framework\n fwrep-activate-v2 <id> Activate framework\n fwrep-deprecate-v2 <id> Deprecate framework\n fwrep-archive-v2 <id> Archive framework (terminal)\n fwrep-touch-v2 <id> Touch framework\n fwrep-get-v2 <id> Get V2 framework\n fwrep-list-v2 List V2 frameworks\n fwrep-create-report-v2 [options] <id> <frameworkId> Create V2 report (queued)\n fwrep-start-report-v2 <id> Start report\n fwrep-complete-report-v2 <id> Complete report\n fwrep-fail-report-v2 <id> [reason] Fail report\n fwrep-cancel-report-v2 <id> [reason] Cancel report\n fwrep-get-report-v2 <id> Get V2 report\n fwrep-list-reports-v2 List V2 reports\n fwrep-auto-deprecate-idle-v2 Auto-deprecate idle fws\n fwrep-auto-fail-stuck-v2 Auto-fail stuck generating reports\n fwrep-gov-stats-v2 V2 gov aggregate stats (fw reporter)\n help [command] display help for command\n",
38
38
  "compt": "Usage: chainlesschain compt [options] [command]\n\nCompression Telemetry V2 governance (in-memory, CLI v0.143.0)\n\nOptions:\n -h, --help display help for command\n\nCommands:\n enums-v2\n register-profile-v2 [options]\n activate-profile-v2 <id>\n stale-profile-v2 <id>\n archive-profile-v2 <id>\n touch-profile-v2 <id>\n get-profile-v2 <id>\n list-profiles-v2\n create-sample-v2 [options]\n recording-sample-v2 <id>\n record-sample-v2 <id>\n fail-sample-v2 [options] <id>\n cancel-sample-v2 [options] <id>\n get-sample-v2 <id>\n list-samples-v2\n config-v2\n set-max-active-profiles-v2 <n>\n set-max-pending-samples-v2 <n>\n set-profile-idle-ms-v2 <ms>\n set-sample-stuck-ms-v2 <ms>\n auto-stale-idle-v2\n auto-fail-stuck-v2\n gov-stats-v2\n help [command] display help for command\n",
@@ -68,7 +68,7 @@
68
68
  "governance": "Usage: chainlesschain governance [options] [command]\n\nCommunity governance — proposals, voting, impact analysis, prediction\n\nOptions:\n -h, --help display help for command\n\nCommands:\n types [options] List proposal types\n statuses [options] List proposal statuses\n impact-levels [options] List impact levels\n create [options] <title> Create a governance proposal (starts as draft)\n list [options] List proposals\n show [options] <proposal-id> Show proposal details\n activate [options] <proposal-id> Activate a draft proposal for voting\n close [options] <proposal-id> Close voting — auto-resolves to passed/rejected\n expire <proposal-id> Mark a draft/active proposal as expired\n vote [options] <proposal-id> <voter-did> <yes|no|abstain> Cast a vote (replaces any prior vote by same voter)\n votes [options] <proposal-id> List votes for a proposal\n tally [options] <proposal-id> Show vote tally with quorum/threshold check\n analyze [options] <proposal-id> Run heuristic impact analysis on a proposal\n predict [options] <proposal-id> Predict voting outcome (heuristic or vote-based)\n stats [options] Governance statistics\n proposer-maturities-v2 [options] List proposer V2 maturity states\n delegation-lifecycles-v2 [options] List delegation V2 lifecycle states\n default-max-active-proposers-per-realm Default per-realm active proposer cap\n max-active-proposers-per-realm Current per-realm active proposer cap\n set-max-active-proposers-per-realm <n> Set per-realm active proposer cap\n default-max-active-delegations-per-delegator Default per-delegator active delegation cap\n max-active-delegations-per-delegator Current per-delegator active delegation cap\n set-max-active-delegations-per-delegator <n> Set per-delegator active delegation cap\n default-proposer-idle-ms Default proposer idle window (ms)\n proposer-idle-ms Current proposer idle window (ms)\n set-proposer-idle-ms <ms> Set proposer idle window (ms)\n default-pending-delegation-ms Default pending delegation window (ms)\n pending-delegation-ms Current pending delegation window (ms)\n set-pending-delegation-ms <ms> Set pending delegation window (ms)\n active-proposer-count [options] Count active V2 proposers (scope by realm)\n active-delegation-count [options] Count active V2 delegations (scope by delegator)\n register-proposer-v2 [options] <proposer-id> Register a V2 proposer\n proposer-v2 <proposer-id> Get V2 proposer record\n set-proposer-maturity-v2 [options] <proposer-id> <status> Set proposer V2 maturity status\n activate-proposer [options] <proposer-id> Activate V2 proposer\n suspend-proposer [options] <proposer-id> Suspend V2 proposer\n retire-proposer [options] <proposer-id> Retire V2 proposer (terminal)\n touch-proposer-activity <proposer-id> Touch V2 proposer lastActivityAt\n create-delegation-v2 [options] <delegation-id> Create V2 vote delegation\n delegation-v2 <delegation-id> Get V2 delegation record\n set-delegation-status-v2 [options] <delegation-id> <status> Set delegation V2 status\n activate-delegation [options] <delegation-id> Activate V2 delegation\n revoke-delegation [options] <delegation-id> Revoke V2 delegation (terminal)\n expire-delegation [options] <delegation-id> Expire V2 delegation (terminal)\n auto-retire-idle-proposers Auto-retire active/suspended proposers past idle window\n auto-expire-stale-pending-delegations Auto-expire pending delegations past window\n stats-v2 V2 governance statistics\n help [command] display help for command\n",
69
69
  "hardening": "Usage: chainlesschain hardening [options] [command]\n\nSecurity hardening — baselines, audits, regression detection\n\nOptions:\n -h, --help display help for command\n\nCommands:\n baseline Performance baseline management\n audit Security audit management\n config-check [options] <config-path> Audit a config file (presence, required keys, placeholders)\n deploy-check [options] Evaluate the 6-item production-deployment checklist\n audit-statuses-v2 [options] List V2 audit lifecycle statuses\n baseline-statuses-v2 [options] List V2 baseline lifecycle statuses\n severities-v2 [options] List V2 severity buckets\n default-max-concurrent-audits [options] Default concurrent audit cap\n max-concurrent-audits [options] Current concurrent audit cap\n set-max-concurrent-audits [options] <n> Set concurrent audit cap\n default-baseline-retention-ms [options] Default baseline retention in ms\n baseline-retention-ms [options] Current baseline retention in ms\n set-baseline-retention-ms [options] <ms> Set baseline retention in ms\n default-audit-timeout-ms [options] Default audit timeout in ms\n audit-timeout-ms [options] Current audit timeout in ms\n set-audit-timeout-ms [options] <ms> Set audit timeout in ms\n running-audit-count [options] Number of currently RUNNING audits\n register-audit-v2 [options] <name> Register a V2 audit entry (PENDING)\n start-audit [options] <audit-id> Start a PENDING audit (enforces concurrency cap)\n complete-audit [options] <audit-id> Complete a RUNNING audit\n set-audit-status-v2 [options] <audit-id> <status> Transition audit to a new status\n audit-status-v2 [options] <audit-id> Get V2 audit status\n auto-timeout-audits [options] Bulk-fail RUNNING audits past auditTimeoutMs\n create-baseline-v2 [options] <name> Create a V2 baseline (DRAFT)\n activate-baseline [options] <baseline-id> Activate a DRAFT baseline (supersedes previous ACTIVE)\n set-baseline-status-v2 [options] <baseline-id> <status> Transition baseline to a new status\n baseline-status-v2 [options] <baseline-id> Get V2 baseline status\n auto-archive-stale-baselines [options] Bulk-archive SUPERSEDED baselines past retention\n stats-v2 [options] V2 hardening statistics\n help [command] display help for command\n",
70
70
  "hmemory": "Usage: chainlesschain hmemory [options] [command]\n\nHierarchical Memory 2.0 — four-layer memory system\n\nOptions:\n -h, --help display help for command\n\nCommands:\n store [options] <content> Store a memory at the appropriate layer\n recall [options] <query> Recall memories with forgetting curve\n consolidate Promote and forget memories across layers\n search [options] <query> Search memories by type\n stats [options] Show memory statistics\n share [options] <id> <agent-id> Share a memory with another agent\n prune [options] Remove weak old memories\n layers [options] List MEMORY_LAYER enum values\n types [options] List MEMORY_TYPE enum values\n statuses [options] List CONSOLIDATION_STATUS enum values\n permissions [options] List SHARE_PERMISSION enum values\n attach-metadata [options] <id> Attach V2 metadata (scene/context/concepts) to a memory\n promote-v2 [options] <id> Promote memory one layer up (working→short-term→long-term)\n demote-v2 [options] <id> Demote memory one layer down (short-term → working)\n share-v2 [options] <id> <target> Share a memory with permissions (read,copy,modify)\n revoke-share [options] <shareId> Revoke a sharing record\n shares [options] List V2 sharing records\n search-episodic-v2 [options] [query] Search episodic memories with time/scene/context filters\n search-semantic-v2 [options] [query] Search semantic memories with concept similarity\n consolidate-v2 [options] Run V2 consolidation with status tracking\n consolidations [options] List V2 consolidation run history\n prune-v2 [options] Layer-scoped prune with custom threshold\n stats-v2 [options] Extended V2 stats with per-layer + consolidation + shares\n enums-v2 Show V2 enums (tier maturity + promotion lifecycle)\n config-v2 Show V2 config thresholds\n set-max-active-tiers-v2 <n> Set max active tiers per owner\n set-max-pending-promotions-v2 <n> Set max pending promotions per tier\n set-tier-idle-ms-v2 <n> Set tier idle threshold (ms)\n set-promotion-stuck-ms-v2 <n> Set promotion stuck threshold (ms)\n register-tier-v2 [options] <id> <owner> Register V2 memory tier\n activate-tier-v2 <id> Activate tier\n dormant-tier-v2 <id> Mark tier dormant\n retire-tier-v2 <id> Retire tier (terminal)\n touch-tier-v2 <id> Touch tier lastTouchedAt\n get-tier-v2 <id> Get V2 tier\n list-tiers-v2 List all V2 tiers\n create-promotion-v2 [options] <id> <tierId> Create V2 promotion (queued)\n start-promotion-v2 <id> Start promotion (queued→promoting)\n complete-promotion-v2 <id> Complete promotion (promoting→promoted)\n fail-promotion-v2 <id> [reason] Fail promotion\n cancel-promotion-v2 <id> [reason] Cancel promotion\n get-promotion-v2 <id> Get V2 promotion\n list-promotions-v2 List all V2 promotions\n auto-dormant-idle-v2 Auto-dormant idle active tiers\n auto-fail-stuck-v2 Auto-fail stuck promoting promotions\n gov-stats-v2 V2 governance aggregate stats\n help [command] display help for command\n",
71
- "hook": "Usage: chainlesschain hook [options] [command]\n\nLifecycle hook management\n\nOptions:\n -h, --help display help for command\n\nCommands:\n list [options] List registered hooks (DB) + .claude/settings.json hooks\n test [options] <event> <tool> [args...] Show which settings.json hooks fire for an event+tool (e.g. hook test PreToolUse run_shell \"git push\"); --run executes them\n replay [options] <event-id> Replay a recorded hook delivery (needs CC_HOOK_EVENT_LOG); dry-run by default, --run executes observe-only hooks\n events-log [options] List or verify the recorded hook delivery log (CC_HOOK_EVENT_LOG)\n add [options] <event> <name> Register a new hook\n remove <id> Remove a hook by ID\n run [options] <event> Manually trigger hooks for an event\n fire [options] <event> Fire a session-level hook (SessionStart/UserPromptSubmit/AssistantResponse/SessionEnd) and honor stdout JSON directives\n stats [options] Show hook execution statistics\n events List all valid hook event types\n maturities-v2 List hook profile maturity states (V2)\n exec-lifecycle-v2 List hook exec lifecycle states (V2)\n stats-v2 Show hook-manager V2 stats\n config-v2 Show hook-manager V2 config\n register-profile-v2 <id> <owner> [event]\n activate-profile-v2 <id>\n disable-profile-v2 <id>\n retire-profile-v2 <id>\n touch-profile-v2 <id>\n get-profile-v2 <id>\n list-profiles-v2\n create-exec-v2 <id> <hookId>\n start-exec-v2 <id>\n complete-exec-v2 <id>\n fail-exec-v2 <id> [reason]\n cancel-exec-v2 <id> [reason]\n get-exec-v2 <id>\n list-execs-v2\n auto-disable-idle-v2\n auto-fail-stuck-v2\n set-max-active-hooks-v2 <n>\n set-max-pending-execs-v2 <n>\n set-hook-idle-ms-v2 <n>\n set-hook-exec-stuck-ms-v2 <n>\n reset-state-v2\n help [command] display help for command\n",
71
+ "hook": "Usage: chainlesschain hook [options] [command]\n\nLifecycle hook management\n\nOptions:\n -h, --help display help for command\n\nCommands:\n list [options] List registered hooks (DB) + .claude/settings.json hooks\n trust [options] [file] Explicitly trust project Hook definitions; changed content requires reapproval\n trust-status [options] [file] Show content-bound project Hook trust status\n untrust [options] [file] Revoke project Hook trust\n audit [options] List or verify the canonical tamper-evident Hook audit\n test [options] <event> <tool> [args...] Show which settings.json hooks fire for an event+tool (e.g. hook test PreToolUse run_shell \"git push\"); --run executes them\n replay [options] <event-id> Replay a recorded hook delivery (needs CC_HOOK_EVENT_LOG); dry-run by default, --run executes observe-only hooks\n events-log [options] List or verify the recorded hook delivery log (CC_HOOK_EVENT_LOG)\n add [options] <event> <name> Register a new hook\n remove <id> Remove a hook by ID\n run [options] <event> Manually trigger hooks for an event\n fire [options] <event> Fire a session-level hook (SessionStart/UserPromptSubmit/AssistantResponse/SessionEnd) and honor stdout JSON directives\n stats [options] Show hook execution statistics\n events List all valid hook event types\n maturities-v2 List hook profile maturity states (V2)\n exec-lifecycle-v2 List hook exec lifecycle states (V2)\n stats-v2 Show hook-manager V2 stats\n config-v2 Show hook-manager V2 config\n register-profile-v2 <id> <owner> [event]\n activate-profile-v2 <id>\n disable-profile-v2 <id>\n retire-profile-v2 <id>\n touch-profile-v2 <id>\n get-profile-v2 <id>\n list-profiles-v2\n create-exec-v2 <id> <hookId>\n start-exec-v2 <id>\n complete-exec-v2 <id>\n fail-exec-v2 <id> [reason]\n cancel-exec-v2 <id> [reason]\n get-exec-v2 <id>\n list-execs-v2\n auto-disable-idle-v2\n auto-fail-stuck-v2\n set-max-active-hooks-v2 <n>\n set-max-pending-execs-v2 <n>\n set-hook-idle-ms-v2 <n>\n set-hook-exec-stuck-ms-v2 <n>\n reset-state-v2\n help [command] display help for command\n",
72
72
  "hub": "Usage: chainlesschain hub [options] [command]\n\nPersonal Data Hub — local vault + adapters + AnalysisEngine on this machine\n\nOptions:\n -h, --help display help for command\n\nCommands:\n ask [options] <question> Natural-language question over your local vault\n repl [options] Persistent ask loop — opens the vault once, then answers follow-up questions fast (amortizes the ~8s per-call CLI cold-start)\n retrieve-context [options] <question> RAG preflight — gather facts + build LLM prompt WITHOUT calling LLM (for cloud-LLM callers that need RAG context)\n stats [options] Vault row counts + hub paths (use --full to also list adapters + LLM)\n health [options] Component health: vault / llm / kgSink / ragSink\n list-adapters [options] List registered adapters\n readiness [options] Per-adapter 就绪检查:能否采集 + 不能的原因(未配置/需采集/不支持)\n sync-adapter [options] <name> Run one adapter's ingest pipeline\n sync-all [options] Run all registered adapters in series\n bilibili-adb-sync [options] Bilibili C 路径: pull cookies via ADB from the user's Android Bilibili App, fetch 4 endpoints, ingest as snapshot. Needs rooted Android + Bilibili App logged in + `adb` on PATH.\n bilibili-adb-doctor [options] Bilibili C 路径 dry-run: probe adb + root + Bilibili App + cookies completeness without triggering a sync. Use this BEFORE `cc hub bilibili-adb-sync` to debug env issues.\n weibo-adb-sync [options] Weibo C 路径: pull m.weibo.cn cookies via ADB from the user's Android Weibo App, fetch UID + 3 endpoints (posts/favourites/follows), ingest as snapshot. Needs rooted Android + Weibo App logged in + `adb` on PATH. No X-Bogus / WBI signing required.\n kuaishou-adb-sync [options] Kuaishou C 路径: pull www.kuaishou.com cookies via ADB from the user's Android Kuaishou App (com.smile.gifmaker, NOT 极速版 com.kuaishou.nebula), parse profile from kuaishou.web.cp.api_ph cookie payload (no HTTP) + 3 GraphQL endpoints (watch/collect/search, __NS_sig3 + kpf/kpn — CLI short-circuits, desktop uses KuaishouSignBridge). Needs rooted Android + Kuaishou App logged in once + opened a video once + `adb` on PATH.\n toutiao-adb-sync [options] Toutiao C 路径: pull www.toutiao.com cookies via ADB from the user's Android Toutiao App (com.ss.android.article.news, NOT 极速版), fetch profile (no _sig) + 3 endpoints (feed/collection/search, _signature required — CLI short-circuits, desktop uses ToutiaoSignBridge). Needs rooted Android + Toutiao App logged in once + `adb` on PATH.\n xhs-adb-sync [options] Xhs C 路径: pull xiaohongshu.com cookies via ADB from the user's Android Xhs App, fetch userId + 3 endpoints (notes/liked/follows). Best-effort X-S signing (~60% GET hit rate). Needs rooted Android + Xhs App logged in + `adb` on PATH.\n douyin-adb-sync [options] Douyin C 路径: pull <uid>_im.db cohort via ADB from the user's Android Douyin App, parse msg + SIMPLE_USER (abrignoni DFIR), ingest as snapshot. Needs rooted Android + Douyin App logged in + `adb` on PATH.\n douyin-watch-sync [options] Douyin 观看历史 C 路径: pull video_record.db via ADB from the user's Android Douyin App (com.ss.android.ugc.aweme), read record_<uid> (aid + view_time_timestamp + enter_from), ingest as `history` (BROWSE) events. Plaintext — no X-Bogus signing, no SQLCipher. Needs rooted Android + Douyin App with watch history. Add --resolve-titles to enrich each event with the video's desc/author/duration via the web detail endpoint (also no signing).\n rederive [options] Re-derive canonical events from raw_events without re-fetching from source (recovers orphan raws from a past sync where putBatch silently failed, e.g. trap #25 partial-index drift).\n query-events [options] Query vault events with filters\n search [options] Vault Browser search — events_fts (FTS5) + faceted filters\n facet-counts [options] Sidebar / chip counts — events grouped by category / adapter / subtype\n export-events [options] Export all vault events as JSON (module 101 §8.3 cross-device backup)\n import-events [options] Import vault events from a JSON array file (idempotent upsert by id; §8.3)\n recent-audit [options] Recent audit log entries\n register-mock [options] Register MockAdapter (dev/smoke only)\n run-skill [options] <name> Run a built-in analysis skill: overview (跨 app 汇聚, 决策依据) / spending / relations / footprint / interests / timeline. 'analysis.overview' aggregates all apps' data into one cross-app snapshot.\n salvage [options] <dumpfile> Method B (免密钥): salvage SQLite leaf-page records from a /proc/mem dump → ingest into the vault with the correct per-app source (--app). Used by the Android root 一键采集 button after a memory scan.\n collect-qq [options] QQNT (modern QQ): decrypt a root-staged encrypted nt_msg.db via the DERIVED key (no frida), protobuf-parse messages, and ingest into the vault. Used by the Android CollectQqNativeTool (su-reads DB + uids); also runnable on PC.\n collect-db [options] Ingest an app's PLAINTEXT SQLite dbs (browse/read/history/content/config) into the vault — generic readable-record extraction with noise filtering. Pair with the Magisk daemon which stages the dbs (root, MIUI cross-app). Encrypted IM has its own collectors (collect-qq/collect-wechat).\n collect-wechat [options] WeChat: decrypt a root-staged EnMicroMsg.db via the DERIVED key MD5(IMEI+uin)[:7] (no frida; saved/raw keys as fallback), parse message/rcontact/chatroom, and ingest. Pairs with the Magisk daemon (stages DB + uin/IMEI candidates).\n collect-qzone [options] QQ空间 (Qzone): collect 说说/留言板/相册 via the Qzone CGI API. No local DB — needs the qzone-domain p_skey cookie (from the in-app WebView or a browser login to user.qzone.qq.com; base .qq.com skey is rejected). Derives g_tk from p_skey and ingests as post/message/media events.\n event-detail [options] <eventId> 推文 §AI 给出处: fetch full event row from local vault by id (used by citation chip deeplink).\n export [options] 推文 §一键带走: copy SQLCipher vault.db (+ WAL/SHM) to <path>. Encrypted at rest; reimport via cc hub import-vault on desktop.\n destroy [options] DESTRUCTIVE: wipe vault.db + WAL. Requires --confirm. Adapters / accounts files preserved.\n aichat AIChat WebView 鉴权向导 — list / login / probe / register / health / unregister 9 家国产 AI\n wechat WeChat adapter — env-probe / register / list / unregister (rooted Android required for 8.0+)\n help [command] display help for command\n",
73
73
  "ide": "Usage: chainlesschain ide [options] [command]\n\nInspect IDE bridge discovery (editor MCP server auto-connect)\n\nOptions:\n -h, --help display help for command\n\nCommands:\n list [options] List live IDE lockfiles (editor MCP servers advertised)\n status [options] Show the IDE server `cc agent` would connect to right\n now\n doctor [options] Explain why IDE discovery did / didn't pick a server\n jetbrains [options] Show whether IntelliJ IDEA's built-in MCP (server\n `idea`) would auto-connect\n help [command] display help for command\n",
74
74
  "import": "Usage: chainlesschain import [options] [command]\n\nImport knowledge from external sources\n\nOptions:\n -h, --help display help for command\n\nCommands:\n markdown [options] <dir> Import markdown files from a directory\n evernote [options] <file> Import from Evernote ENEX export file\n notion [options] <dir> Import from Notion export directory\n pdf [options] <file> Import text from a PDF file\n source-maturities-v2 List V2 source maturity states\n import-job-lifecycles-v2 List V2 import-job lifecycle states\n stats-v2 V2 knowledge-importer stats\n get-max-active-sources-v2 Get max active sources per owner (V2)\n set-max-active-sources-v2 <n> Set max active sources per owner (V2)\n get-max-pending-jobs-v2 Get max pending jobs per source (V2)\n set-max-pending-jobs-v2 <n> Set max pending jobs per source (V2)\n get-source-idle-ms-v2 Get source idle threshold (V2)\n set-source-idle-ms-v2 <ms> Set source idle threshold (V2)\n get-job-stuck-ms-v2 Get import-job stuck threshold (V2)\n set-job-stuck-ms-v2 <ms> Set import-job stuck threshold (V2)\n active-source-count-v2 <ownerId> Active source count for owner (V2)\n pending-job-count-v2 <sourceId> Pending import-job count for source\n (V2)\n register-source-v2 [options] <id> Register a V2 source manifest\n get-source-v2 <id> Get a V2 source\n list-sources-v2 [options] List V2 sources\n set-source-status-v2 <id> <next> Set V2 source status\n activate-source-v2 <id> Activate a V2 source\n pause-source-v2 <id> Pause a V2 source\n archive-source-v2 <id> Archive a V2 source\n touch-source-v2 <id> Touch a V2 source\n create-import-job-v2 [options] <id> Create a V2 import job\n get-import-job-v2 <id> Get a V2 import job\n list-import-jobs-v2 [options] List V2 import jobs\n set-import-job-status-v2 <id> <next> Set V2 import-job status\n start-import-job-v2 <id> Start a V2 import job\n complete-import-job-v2 <id> Complete a V2 import job\n fail-import-job-v2 <id> Fail a V2 import job\n cancel-import-job-v2 <id> Cancel a V2 import job\n auto-pause-idle-sources-v2 Auto-pause idle V2 sources\n auto-fail-stuck-import-jobs-v2 Auto-fail stuck V2 import jobs\n help [command] display help for command\n",
@@ -91,7 +91,7 @@
91
91
  "mcp": "Usage: chainlesschain mcp [options] [command]\n\nMCP server management and tool execution\n\nOptions:\n -h, --help display help for command\n\nCommands:\n login [options] <target> Authorize a remote MCP server via OAuth (opens a browser, or prints the URL in headless/SSH environments); stores the token. <target> is a URL or a configured server name.\n logout <target> Delete the stored OAuth token for a remote MCP server (<target> is a URL or a configured server name)\n auth [options] List stored MCP OAuth tokens\n serve [options] Expose local file tools (read/list/search/write, root-confined) as a Streamable-HTTP MCP server for other clients\n computer-use [options] Expose GUI control (screenshot/window-list/click/type/scroll/clipboard/app-launch) as a Streamable-HTTP MCP server. OFF by default; input verbs need confirm:true; high-risk apps (terminals/IDEs/settings/password managers) always confirm\n servers|list [options] List configured MCP servers\n materialize-package [options] <name> Replace one exact JavaScript package launcher with a content-addressed, guarded dependency capsule\n trust-executable [options] <name> Review and trust the current executable and interpreter-entrypoint bytes for one stdio MCP server\n add [options] <name> Add or update an MCP server configuration\n remove [options] <name> Remove an MCP server configuration\n get [options] <name> Show one MCP server configuration and its source\n doctor [options] [name] Validate MCP configuration and test transport handshakes\n connect [options] <name> Connect to an MCP server and verify its capabilities\n disconnect <name> Disconnect from an MCP server\n tools [options] List available MCP tools\n call [options] <tool> Call an MCP tool\n resources [options] List resources exposed by MCP servers\n read-resource [options] <uri> Read an MCP resource by URI\n prompts [options] List prompts exposed by MCP servers\n get-prompt [options] <name> Fetch a rendered MCP prompt by name\n trust-helper [options] <name> Trust the exact headers helper command for a workspace-local MCP server\n trust-project [options] Re-trust the project .mcp.json after reviewing a content change (records its fingerprint for --project-mcp runs)\n scaffold [options] <name> Scaffold a new MCP server project (stdio or http+sse)\n registry Browse the curated catalog of community MCP servers\n server-maturities-v2 List MCP server maturity states (V2)\n invocation-lifecycle-v2 List MCP invocation lifecycle states (V2)\n stats-v2 Show MCP registry V2 stats\n config-v2 Show MCP registry V2 config\n register-server-v2 <id> <owner> <endpoint> Register an MCP server (V2)\n activate-server-v2 <id> Activate an MCP server (V2)\n degrade-server-v2 <id> Degrade an MCP server (V2)\n retire-server-v2 <id> Retire an MCP server (V2)\n touch-server-v2 <id> Touch an MCP server (V2)\n get-server-v2 <id> Get an MCP server (V2)\n list-servers-v2 List MCP servers (V2)\n create-invocation-v2 <id> <serverId> <tool> Create an MCP invocation (V2)\n dispatch-invocation-v2 <id> Dispatch an MCP invocation (V2)\n complete-invocation-v2 <id> Complete an MCP invocation (V2)\n fail-invocation-v2 <id> [reason] Fail an MCP invocation (V2)\n cancel-invocation-v2 <id> [reason] Cancel an MCP invocation (V2)\n get-invocation-v2 <id> Get an MCP invocation (V2)\n list-invocations-v2 List MCP invocations (V2)\n auto-degrade-idle-servers-v2 Auto-degrade idle MCP servers (V2)\n auto-fail-stuck-invocations-v2 Auto-fail stuck MCP invocations (V2)\n set-max-active-servers-v2 <n> Set max active servers per owner (V2)\n set-max-pending-invocations-v2 <n> Set max pending invocations per server (V2)\n set-server-idle-ms-v2 <n> Set MCP server idle timeout in ms (V2)\n set-invocation-stuck-ms-v2 <n> Set MCP invocation stuck timeout in ms (V2)\n reset-state-v2 Reset MCP registry V2 in-memory state\n help [command] display help for command\n",
92
92
  "mcpscaf": "Usage: chainlesschain mcpscaf [options] [command]\n\nMCP Scaffold V2 governance\n\nOptions:\n -h, --help display help for command\n\nCommands:\n enums-v2\n config-v2\n set-max-active-v2 <n>\n set-max-pending-v2 <n>\n set-idle-ms-v2 <n>\n set-stuck-ms-v2 <n>\n register-profile-v2 [options] <id> <owner>\n activate-profile-v2 <id>\n stale-profile-v2 <id>\n archive-profile-v2 <id>\n touch-profile-v2 <id>\n get-profile-v2 <id>\n list-profiles-v2\n create-generation-v2 [options] <id> <profileId>\n generating-generation-v2 <id>\n generate-generation-v2 <id>\n fail-generation-v2 <id> [reason]\n cancel-generation-v2 <id> [reason]\n get-generation-v2 <id>\n list-generations-v2\n auto-stale-idle-v2\n auto-fail-stuck-v2\n gov-stats-v2\n reset-state-v2\n help [command] display help for command\n",
93
93
  "meminj": "Usage: chainlesschain meminj [options] [command]\n\nMemory Injection V2 governance\n\nOptions:\n -h, --help display help for command\n\nCommands:\n enums-v2\n config-v2\n set-max-active-v2 <n>\n set-max-pending-v2 <n>\n set-idle-ms-v2 <n>\n set-stuck-ms-v2 <n>\n register-rule-v2 [options] <id> <owner>\n activate-rule-v2 <id>\n pause-rule-v2 <id>\n archive-rule-v2 <id>\n touch-rule-v2 <id>\n get-rule-v2 <id>\n list-rules-v2\n create-injection-v2 [options] <id> <ruleId>\n injecting-injection-v2 <id>\n apply-injection-v2 <id>\n fail-injection-v2 <id> [reason]\n cancel-injection-v2 <id> [reason]\n get-injection-v2 <id>\n list-injections-v2\n auto-pause-idle-v2\n auto-fail-stuck-v2\n gov-stats-v2\n reset-state-v2\n help [command] display help for command\n",
94
- "memory": "Usage: chainlesschain memory [options] [command]\n\nPersistent memory and daily notes\n\nOptions:\n -h, --help display help for command\n\nCommands:\n files [options] List the project-memory files cc agent\n auto-loads here (cc.md hierarchy + imports\n + path-scoped rules)\n show [options] Show memory entries\n export [options] Export all memory entries as JSON (module\n 101 §8.3 backup)\n import [options] Import memory entries from a JSON array\n file (idempotent upsert by id; §8.3)\n add [options] <text> Add a memory entry\n search [options] <query> Search memory entries\n delete <id> Delete a memory entry\n daily [options] [date] View or append to daily notes\n recall [options] [query] Recall scoped memory (session-core\n MemoryStore)\n store [options] <content> Write a scoped memory (session-core\n MemoryStore)\n consolidate [options] Consolidate a session's trace into scoped\n memory\n file [options] View or edit the long-term MEMORY.md file\n entry-maturities-v2 List V2 entry maturity states\n consolidation-lifecycles-v2 List V2 consolidation job lifecycle states\n stats-v2 Show V2 governance stats\n get-max-active-entries-v2 Get max active entries per category\n set-max-active-entries-v2 <n> Set max active entries per category\n get-max-running-jobs-v2 Get max running jobs per source\n set-max-running-jobs-v2 <n> Set max running jobs per source\n get-entry-idle-ms-v2 Get entry idle threshold (ms)\n set-entry-idle-ms-v2 <n> Set entry idle threshold (ms)\n get-job-stuck-ms-v2 Get job stuck threshold (ms)\n set-job-stuck-ms-v2 <n> Set job stuck threshold (ms)\n active-entry-count-v2 <category> Count active entries for a category\n running-job-count-v2 <source> Count running jobs for a source\n register-entry-v2 [options] <id> Register a V2 entry\n get-entry-v2 <id> Get a V2 entry\n list-entries-v2 [options] List V2 entries\n activate-entry-v2 <id> pending|parked → active\n park-entry-v2 <id> active → parked\n archive-entry-v2 <id> → archived (terminal)\n touch-entry-v2 <id> Update lastSeenAt\n create-job-v2 [options] <id> Create a V2 consolidation job\n get-job-v2 <id> Get a V2 consolidation job\n list-jobs-v2 [options] List V2 consolidation jobs\n start-job-v2 <id> queued → running\n succeed-job-v2 <id> running → succeeded (terminal)\n fail-job-v2 <id> running → failed (terminal)\n cancel-job-v2 <id> queued|running → cancelled (terminal)\n auto-park-idle-entries-v2 Flip idle active entries → parked\n auto-fail-stuck-jobs-v2 Flip stuck running jobs → failed\n help [command] display help for command\n",
94
+ "memory": "Usage: chainlesschain memory [options] [command]\n\nPersistent memory and daily notes\n\nOptions:\n -h, --help display help for command\n\nCommands:\n files [options] List the project-memory files cc agent\n auto-loads here (cc.md hierarchy +\n imports + path-scoped rules)\n show [options] Show memory entries\n export [options] Export all memory entries as JSON (module\n 101 §8.3 backup)\n import [options] Import memory entries from a JSON array\n file (idempotent upsert by id; §8.3)\n add [options] <text> Add a memory entry\n search [options] <query> Search memory entries\n delete <id> Delete a memory entry\n reconcile [options] <operation-id> Resume a pending canonical memory\n deletion\n daily [options] [date] View or append to daily notes\n recall [options] [query] Recall scoped memory (session-core\n MemoryStore)\n store [options] <content> Write a scoped memory (session-core\n MemoryStore)\n consolidate [options] Consolidate a session's trace into scoped\n memory\n file [options] View or edit the long-term MEMORY.md file\n entry-maturities-v2 List V2 entry maturity states\n consolidation-lifecycles-v2 List V2 consolidation job lifecycle\n states\n stats-v2 Show V2 governance stats\n get-max-active-entries-v2 Get max active entries per category\n set-max-active-entries-v2 <n> Set max active entries per category\n get-max-running-jobs-v2 Get max running jobs per source\n set-max-running-jobs-v2 <n> Set max running jobs per source\n get-entry-idle-ms-v2 Get entry idle threshold (ms)\n set-entry-idle-ms-v2 <n> Set entry idle threshold (ms)\n get-job-stuck-ms-v2 Get job stuck threshold (ms)\n set-job-stuck-ms-v2 <n> Set job stuck threshold (ms)\n active-entry-count-v2 <category> Count active entries for a category\n running-job-count-v2 <source> Count running jobs for a source\n register-entry-v2 [options] <id> Register a V2 entry\n get-entry-v2 <id> Get a V2 entry\n list-entries-v2 [options] List V2 entries\n activate-entry-v2 <id> pending|parked → active\n park-entry-v2 <id> active → parked\n archive-entry-v2 <id> → archived (terminal)\n touch-entry-v2 <id> Update lastSeenAt\n create-job-v2 [options] <id> Create a V2 consolidation job\n get-job-v2 <id> Get a V2 consolidation job\n list-jobs-v2 [options] List V2 consolidation jobs\n start-job-v2 <id> queued → running\n succeed-job-v2 <id> running → succeeded (terminal)\n fail-job-v2 <id> running → failed (terminal)\n cancel-job-v2 <id> queued|running → cancelled (terminal)\n auto-park-idle-entries-v2 Flip idle active entries → parked\n auto-fail-stuck-jobs-v2 Flip stuck running jobs → failed\n help [command] display help for command\n",
95
95
  "mtc": "Usage: chainlesschain mtc [options] [command]\n\nMerkle Tree Certificates — batch issuance & verification\n\nOptions:\n -h, --help display help for command\n\nCommands:\n batch [options] <input> Build a tree + landmark + envelopes from a list of leaves\n verify [options] <envelope> Verify an MTC envelope against a landmark\n landmark Landmark utilities\n batch-dids [options] Build a batch from DIDs in the local DB (all by default)\n batch-skills [options] Build a batch from local CLI skills (all by default)\n publish-skills [options] Marketplace publisher daemon: detect skill deltas + auto-close batches\n publish-status [options] <state-file> Read a publish-skills state file and print its current state + recent history\n serve [options] Run a verifier daemon: subscribe to landmarks, persist to disk, ingest\n federation Phase 3 federation MTCA — manage M-of-N member registry\n help [command] display help for command\n",
96
96
  "multimodal": "Usage: chainlesschain multimodal|mm [options] [command]\n\nMultimodal collaboration (Phase 27)\n\nOptions:\n -h, --help display help for command\n\nCommands:\n modalities [options] List 5 input modalities with weights\n input-formats [options] List 7 supported document formats (4 native)\n output-formats [options] List 6 output formats\n statuses [options] List session statuses\n session-create [options] Create a multimodal session\n session-show [options] <sessionId> Show session details\n sessions [options] List sessions\n session-complete [options] <sessionId> Mark session as completed\n session-delete [options] <sessionId> Delete session and all artifacts\n add [options] <sessionId> Add a modality input to a session\n modalities-of [options] <sessionId> List modalities added to a session\n fuse [options] <sessionId> Weighted fusion of all input artifacts\n parse [options] <filePath> Parse a document (txt/md/csv/json native)\n build-context [options] <sessionId> Build context from session artifacts\n get-context [options] <sessionId> Get cached/stored context\n clear-context [options] <sessionId> Clear the session's context\n trim-context [options] <sessionId> Trim current context to max tokens\n generate [options] Generate output in one of 6 formats\n artifacts [options] <sessionId> List artifacts for a session\n stats [options] Multimodal system statistics\n session-maturities-v2 [options] List V2 session maturity states\n artifact-lifecycles-v2 [options] List V2 artifact lifecycle states\n default-max-active-sessions-per-owner Show V2 default per-owner active-session cap\n max-active-sessions-per-owner Show current V2 per-owner active-session cap\n set-max-active-sessions-per-owner <n> Set V2 per-owner active-session cap\n default-max-artifacts-per-session Show V2 default per-session artifact cap\n max-artifacts-per-session Show current V2 per-session artifact cap\n set-max-artifacts-per-session <n> Set V2 per-session artifact cap\n default-session-idle-ms Show V2 default session-idle window (ms)\n session-idle-ms Show current V2 session-idle window (ms)\n set-session-idle-ms <ms> Set V2 session-idle window (ms)\n default-artifact-stale-ms Show V2 default artifact-stale window (ms)\n artifact-stale-ms Show current V2 artifact-stale window (ms)\n set-artifact-stale-ms <ms> Set V2 artifact-stale window (ms)\n active-session-count [options] Count active V2 sessions (optionally scoped by owner)\n artifact-count [options] Count open V2 artifacts (optionally scoped by session)\n register-session-v2 [options] <session-id> Register a V2 session\n session-v2 <session-id> Show a V2 session\n set-session-maturity-v2 [options] <session-id> <status> Set V2 session maturity status\n activate-session [options] <session-id> Activate a V2 session\n pause-session [options] <session-id> Pause a V2 session\n complete-session-v2 [options] <session-id> Complete a V2 session\n archive-session [options] <session-id> Archive a V2 session\n touch-session-activity <session-id> Bump lastActivityAt on a V2 session\n register-artifact-v2 [options] <artifact-id> Register a V2 artifact\n artifact-v2 <artifact-id> Show a V2 artifact\n set-artifact-status-v2 [options] <artifact-id> <status> Set V2 artifact lifecycle status\n mark-artifact-ready [options] <artifact-id> Mark V2 artifact ready\n purge-artifact [options] <artifact-id> Purge a V2 artifact\n touch-artifact-access <artifact-id> Bump lastAccessAt on a V2 artifact\n auto-archive-idle-sessions Auto-flip idle V2 sessions to ARCHIVED\n auto-purge-stale-artifacts Auto-flip stale READY V2 artifacts to PURGED\n stats-v2 V2 multimodal stats (counts by state + config)\n help [command] display help for command\n",
97
97
  "multisig": "Usage: chainlesschain multisig [options] [command]\n\nM-of-N multi-signature proposals beyond MTC publisher_signature\n\nOptions:\n -h, --help display help for command\n\nCommands:\n propose [options] <domain> Create a new M-of-N proposal and sign as\n initiator\n sign [options] <proposalId> Add a signature to an existing pending\n proposal\n cancel [options] <proposalId> Cancel a pending or reached proposal\n finalize [options] <proposalId> Mark a reached proposal as consumed\n (business operation complete)\n list [options] List proposals\n show [options] <proposalId> Show detailed proposal with all signatures\n sweep [options] Expire all pending proposals past their\n deadline\n policy Manage per-domain multisig policies\n help [command] display help for command\n",
@@ -134,7 +134,7 @@
134
134
  "sandbox": "Usage: chainlesschain sandbox [options] [command]\n\nSecurity sandbox v2 — isolated agent execution environments\n\nOptions:\n -h, --help display help for command\n\nCommands:\n create [options] <agent-id> Create a new sandbox for an agent\n exec [options] <sandbox-id> <code> Execute code within a sandbox\n destroy [options] <sandbox-id> Destroy a sandbox\n list [options] List active sandboxes\n audit [options] [sandbox-id] Show audit log for sandboxes\n quota [options] <sandbox-id> Show or set sandbox quota\n monitor [options] <sandbox-id> Monitor sandbox behavior and detect suspicious patterns\n prune [options] Destroy sandboxes whose ttl or idle-ttl has expired (Phase 4)\n statuses [options] List sandbox lifecycle status enum values (Phase 87)\n permission-types [options] List permission type enum values (Phase 87)\n risk-levels [options] List risk level enum values (Phase 87)\n quota-types [options] List quota type enum values (Phase 87)\n pause [options] <id> Pause a running sandbox (Phase 87)\n resume [options] <id> Resume a paused sandbox (Phase 87)\n terminate [options] <id> Terminate a sandbox (Phase 87 canonical; more explicit than destroy)\n set-quota-typed [options] <id> <type> <limit> Set a single quota by type (Phase 87)\n check-permission [options] <id> <type> <target> Check whether a sandbox may perform a permission op (Phase 87)\n check-quota [options] <id> <type> [amount] Check quota availability for a type (Phase 87)\n risk-score [options] <id> Compute risk score + risk level for a sandbox (Phase 87)\n risk-level [options] <score> Map a risk score to a RISK_LEVEL bucket (Phase 87)\n auto-isolate [options] <id> Auto-isolate a sandbox: record + terminate (Phase 87)\n isolations [options] List isolation records (Phase 87)\n audit-filter [options] [id] Filter audit log by event types / time range (Phase 87)\n stats-v2 [options] Extended V2 stats (byStatus / auditByAction / isolations) (Phase 87)\n help [command] display help for command\n",
135
135
  "scim": "Usage: chainlesschain scim [options] [command]\n\nSCIM provisioning — user management, connectors, sync\n\nOptions:\n -h, --help display help for command\n\nCommands:\n users SCIM user management\n connectors [options] List SCIM connectors\n sync <connector-id> Trigger SCIM provisioning sync\n status [options] Show SCIM provisioning status\n identity-lifecycles-v2 [options] List V2 identity lifecycle states\n sync-lifecycles-v2 [options] List V2 sync-job lifecycle states\n stats-v2 [options] Show V2 SCIM stats\n get-max-provisioned-v2 Get max provisioned identities per\n connector\n set-max-provisioned-v2 <n> Set max provisioned identities per\n connector\n get-max-running-sync-v2 Get max running sync jobs per connector\n set-max-running-sync-v2 <n> Set max running sync jobs per connector\n get-identity-idle-ms-v2 Get identity idle ms\n set-identity-idle-ms-v2 <ms> Set identity idle ms\n get-sync-stuck-ms-v2 Get sync-job stuck ms\n set-sync-stuck-ms-v2 <ms> Set sync-job stuck ms\n provisioned-count-v2 <connectorId> Count provisioned identities for\n connector\n running-sync-count-v2 <connectorId> Count running sync jobs for connector\n register-identity-v2 [options] <id> Register V2 identity (initial=pending)\n get-identity-v2 <id> Get V2 identity by id\n list-identities-v2 [options] List V2 identities\n provision-identity-v2 <id> Transition identity → provisioned\n suspend-identity-v2 <id> Transition identity → suspended\n deprovision-identity-v2 <id> Transition identity → deprovisioned\n (terminal)\n touch-identity-v2 <id> Update identity lastSeenAt\n create-sync-job-v2 [options] <id> Create V2 sync job (initial=queued)\n get-sync-job-v2 <id> Get V2 sync job by id\n list-sync-jobs-v2 [options] List V2 sync jobs\n start-sync-job-v2 <id> Transition sync job → running\n succeed-sync-job-v2 <id> Transition sync job → succeeded\n (terminal)\n fail-sync-job-v2 <id> Transition sync job → failed (terminal)\n cancel-sync-job-v2 <id> Transition sync job → cancelled\n (terminal)\n auto-deprovision-idle-v2 Auto-deprovision idle identities; output\n flipped\n auto-fail-stuck-sync-v2 Auto-fail stuck running syncs; output\n flipped\n help [command] display help for command\n",
136
136
  "search": "Usage: chainlesschain search [options] <query>\n\nSearch knowledge base (BM25 + vector hybrid)\n\nArguments:\n query Search query\n\nOptions:\n --mode <mode> Search mode: bm25, vector, hybrid (default: \"hybrid\")\n --top-k <n> Number of results (default: \"10\")\n --threshold <n> Minimum score threshold (default: \"0\")\n --json Output as JSON\n -h, --help display help for command\n",
137
- "serve": "Usage: chainlesschain serve [options]\n\nStart WebSocket server for remote CLI access\n\nOptions:\n --app-server Run the canonical CC App Server over stdio\n instead of the legacy WebSocket server\n --app-server-websocket Use the experimental canonical App Server\n WebSocket transport (requires --app-server)\n --app-server-state-dir <path> Owner-controlled rollout directory for\n --app-server\n --app-server-queue-cap <n> Maximum queued App Server requests\n (default: \"256\")\n --app-server-tls-cert <path> TLS certificate for non-loopback App Server\n WebSocket binding\n --app-server-tls-key <path> TLS private key for non-loopback App Server\n WebSocket binding\n -p, --port <port> Port number (default: \"18800\")\n -H, --host <host> Bind host (default: \"127.0.0.1\")\n --token <token> Authentication token (required for remote\n access and App Server WebSocket)\n --max-connections <n> Maximum concurrent connections (default:\n \"10\")\n --timeout <ms> Command execution timeout in milliseconds\n (default: \"30000\")\n --allow-remote Allow non-localhost connections (requires\n --token)\n --project <path> Default project root for sessions\n --remote-session-relay-url <url> Signaling relay URL for Remote Session\n pairing\n --remote-session-peer-id <id> Stable relay peer ID for this local runtime\n --http-port <port> Hosted HTTP port for Phase 5 envelope SSE\n (disabled if unset)\n --bundle <path> Agent bundle directory; may execute local\n MCP commands from mcp.json\n -h, --help display help for command\n",
137
+ "serve": "Usage: chainlesschain serve [options] [command]\n\nStart WebSocket server for remote CLI access\n\nOptions:\n --app-server Run the canonical CC App Server over stdio\n instead of the legacy WebSocket server\n --app-server-websocket Use the experimental canonical App Server\n WebSocket transport (requires --app-server)\n --app-server-state-dir <path> Owner-controlled rollout directory (JSONL\n directory or SQLite parent)\n --app-server-state-path <path> Exact JSONL directory or SQLite database\n path for --app-server\n --app-server-store <backend> Physical rollout adapter: jsonl or sqlite\n (default: jsonl)\n --app-server-queue-cap <n> Maximum queued App Server requests\n (default: \"256\")\n --app-server-tls-cert <path> TLS certificate for non-loopback App Server\n WebSocket binding\n --app-server-tls-key <path> TLS private key for non-loopback App Server\n WebSocket binding\n -p, --port <port> Port number (default: \"18800\")\n -H, --host <host> Bind host (default: \"127.0.0.1\")\n --token <token> Authentication token (required for remote\n access and App Server WebSocket)\n --max-connections <n> Maximum concurrent connections (default:\n \"10\")\n --timeout <ms> Command execution timeout in milliseconds\n (default: \"30000\")\n --allow-remote Allow non-localhost connections (requires\n --token)\n --project <path> Default project root for sessions\n --remote-session-relay-url <url> Signaling relay URL for Remote Session\n pairing\n --remote-session-peer-id <id> Stable relay peer ID for this local runtime\n --http-port <port> Hosted HTTP port for Phase 5 envelope SSE\n (disabled if unset)\n --bundle <path> Agent bundle directory; may execute local\n MCP commands from mcp.json\n -h, --help display help for command\n\nCommands:\n migrate-rollouts [options] Verify or copy canonical rollouts between\n physical storage adapters\n",
138
138
  "services": "Usage: chainlesschain services [options] [command]\n\nManage Docker backend services\n\nOptions:\n -h, --help display help for command\n\nCommands:\n up [services...] Start Docker services\n down Stop Docker services\n logs [options] [services...] View service logs\n pull Pull latest service images\n help [command] display help for command\n",
139
139
  "seshhook": "Usage: chainlesschain seshhook [options] [command]\n\nSession Hooks V2 governance\n\nOptions:\n -h, --help display help for command\n\nCommands:\n enums-v2\n config-v2\n set-max-active-v2 <n>\n set-max-pending-v2 <n>\n set-idle-ms-v2 <n>\n set-stuck-ms-v2 <n>\n register-profile-v2 [options] <id> <owner>\n activate-profile-v2 <id>\n disable-profile-v2 <id>\n retire-profile-v2 <id>\n touch-profile-v2 <id>\n get-profile-v2 <id>\n list-profiles-v2\n create-invocation-v2 [options] <id> <profileId>\n running-invocation-v2 <id>\n complete-invocation-v2 <id>\n fail-invocation-v2 <id> [reason]\n cancel-invocation-v2 <id> [reason]\n get-invocation-v2 <id>\n list-invocations-v2\n auto-disable-idle-v2\n auto-fail-stuck-v2\n gov-stats-v2\n reset-state-v2\n help [command] display help for command\n",
140
140
  "seshsearch": "Usage: chainlesschain seshsearch [options] [command]\n\nSession Search V2 governance\n\nOptions:\n -h, --help display help for command\n\nCommands:\n enums-v2\n config-v2\n set-max-active-v2 <n>\n set-max-pending-v2 <n>\n set-idle-ms-v2 <n>\n set-stuck-ms-v2 <n>\n register-profile-v2 [options] <id> <owner>\n activate-profile-v2 <id>\n stale-profile-v2 <id>\n archive-profile-v2 <id>\n touch-profile-v2 <id>\n get-profile-v2 <id>\n list-profiles-v2\n create-query-v2 [options] <id> <profileId>\n searching-query-v2 <id>\n complete-query-v2 <id>\n fail-query-v2 <id> [reason]\n cancel-query-v2 <id> [reason]\n get-query-v2 <id>\n list-queries-v2\n auto-stale-idle-v2\n auto-fail-stuck-v2\n gov-stats-v2\n reset-state-v2\n help [command] display help for command\n",
@@ -352,11 +352,11 @@ export function registerAgentCommand(program) {
352
352
  )
353
353
  .option(
354
354
  "--sandbox [image]",
355
- "Run shell commands in an ephemeral Docker sandbox (network disabled by default)",
355
+ "Select the sandbox image/engine configuration (workspace-write and network-off are the default posture)",
356
356
  )
357
357
  .option(
358
358
  "--sandbox-mode <mode>",
359
- "Sandbox posture: off | workspace-write | strict (explicit isolation modes fail closed)",
359
+ "Sandbox posture: off | workspace-write | strict (default: workspace-write; isolation modes fail closed)",
360
360
  )
361
361
  .option("--sandbox-network", "Allow network access inside --sandbox")
362
362
  .option(
@@ -863,7 +863,7 @@ export function registerAgentCommand(program) {
863
863
  loadHooks({ cwd: _worktree.repoRoot }).hooks || null;
864
864
  const { runWorktreeCreateHooks, dispatchAsyncHooks } =
865
865
  await import("../lib/settings-hook-events.js");
866
- runWorktreeCreateHooks(_worktreeSettingsHooks, {
866
+ await runWorktreeCreateHooks(_worktreeSettingsHooks, {
867
867
  worktreePath: _worktree.path,
868
868
  branch: _worktree.branch,
869
869
  baseSha: _worktree.baseSha,
@@ -924,7 +924,7 @@ export function registerAgentCommand(program) {
924
924
  try {
925
925
  const { runWorktreeRemoveHooks, dispatchAsyncHooks } =
926
926
  await import("../lib/settings-hook-events.js");
927
- runWorktreeRemoveHooks(_worktreeSettingsHooks, {
927
+ await runWorktreeRemoveHooks(_worktreeSettingsHooks, {
928
928
  worktreePath: _worktree.path,
929
929
  branch: _worktree.branch,
930
930
  removed: fin.removed === true,
@@ -971,9 +971,12 @@ export function registerAgentCommand(program) {
971
971
  if (typeof options.resume === "string" && !options.session) {
972
972
  options.session = options.resume;
973
973
  }
974
+ let sessionBootstrapContext = null;
974
975
  if ((options.continue || options.resume === true) && !options.session) {
975
976
  const { bootstrap } = await import("../runtime/bootstrap.js");
976
- const ctx = await bootstrap({ verbose: program.opts().verbose });
977
+ sessionBootstrapContext = await bootstrap({
978
+ verbose: program.opts().verbose,
979
+ });
977
980
  // Headless intent also means "no interactive picker is possible": -p,
978
981
  // a positional task, an explicit --output-format, or a non-TTY stdin.
979
982
  const headlessIntent =
@@ -982,16 +985,18 @@ export function registerAgentCommand(program) {
982
985
  options.outputFormat !== "text" ||
983
986
  !process.stdin.isTTY;
984
987
  if (headlessIntent) {
985
- // Headless replays the JSONL store only, so resolve "most recent"
986
- // from there 鈥?a DB-only id would resume into an empty transcript.
987
- const { getLastSessionId } =
988
- await import("../harness/jsonl-session-store.js");
989
- options.session = getLastSessionId();
988
+ const { getLastLogicalSessionId } =
989
+ await import("../lib/session-transcript-migration.js");
990
+ const database =
991
+ sessionBootstrapContext.db?.getDatabase?.() ||
992
+ sessionBootstrapContext.db?.getDb?.() ||
993
+ null;
994
+ options.session = getLastLogicalSessionId(database);
990
995
  } else {
991
996
  // Interactive: picker across both stores (agent REPL rebuilds either).
992
997
  const { pickRecentSession } =
993
998
  await import("../lib/session-picker.js");
994
- const picked = await pickRecentSession(ctx, {
999
+ const picked = await pickRecentSession(sessionBootstrapContext, {
995
1000
  message: "Resume which agent session?",
996
1001
  });
997
1002
  options.session = picked.id;
@@ -1005,6 +1010,34 @@ export function registerAgentCommand(program) {
1005
1010
  }
1006
1011
  }
1007
1012
 
1013
+ // A legacy SQLite-only session is imported once into the verified
1014
+ // canonical transcript before fork or replay. This keeps DB as a valid
1015
+ // physical source without allowing headless clients to resume an empty
1016
+ // conversation merely because their reader is JSONL-backed.
1017
+ const resumeRequested = Boolean(options.session);
1018
+ if (resumeRequested && options.session) {
1019
+ const { sessionHasPersistedEvidence } =
1020
+ await import("../harness/jsonl-session-store.js");
1021
+ if (!sessionHasPersistedEvidence(options.session)) {
1022
+ const [{ bootstrap }, { ensureCanonicalSessionFromDatabase }] =
1023
+ await Promise.all([
1024
+ import("../runtime/bootstrap.js"),
1025
+ import("../lib/session-transcript-migration.js"),
1026
+ ]);
1027
+ const context =
1028
+ sessionBootstrapContext ||
1029
+ (await bootstrap({ verbose: program.opts().verbose }));
1030
+ sessionBootstrapContext = context;
1031
+ const database =
1032
+ context.db?.getDatabase?.() || context.db?.getDb?.() || null;
1033
+ const migrated = ensureCanonicalSessionFromDatabase(
1034
+ database,
1035
+ options.session,
1036
+ );
1037
+ if (migrated?.sessionId) options.session = migrated.sessionId;
1038
+ }
1039
+ }
1040
+
1008
1041
  // --fork-session: branch the resolved session into a NEW id so the
1009
1042
  // ORIGINAL transcript is preserved (Claude-Code parity). One chokepoint
1010
1043
  // before headless / stream / interactive dispatch 鈥?all read
@@ -1025,8 +1058,8 @@ export function registerAgentCommand(program) {
1025
1058
  );
1026
1059
  if (fork.missing) {
1027
1060
  process.stderr.write(
1028
- `--fork-session: no headless transcript for "${options.session}" 鈥?` +
1029
- "nothing to fork; continuing on it.\n",
1061
+ `--fork-session: no persisted transcript for "${options.session}"; ` +
1062
+ "nothing to fork, continuing on it.\n",
1030
1063
  );
1031
1064
  } else if (fork.forkedFrom) {
1032
1065
  process.stderr.write(
@@ -1593,18 +1626,16 @@ export function registerAgentCommand(program) {
1593
1626
  }
1594
1627
  return;
1595
1628
  }
1596
- // Resume requested onto a session with no headless (JSONL) transcript?
1597
- // Warn instead of silently starting empty 鈥?headless resume rebuilds
1598
- // from the JSONL store only (DB-only sessions are not replayable here).
1599
- const resumeRequested =
1600
- Boolean(options.continue) || options.resume !== undefined;
1629
+ // If neither the canonical transcript nor a legacy physical adapter
1630
+ // contained the requested logical session, warn instead of silently
1631
+ // presenting a fresh conversation as a successful resume.
1601
1632
  if (resumeRequested && options.session) {
1602
1633
  const { sessionHasPersistedEvidence } =
1603
1634
  await import("../harness/jsonl-session-store.js");
1604
1635
  if (!sessionHasPersistedEvidence(options.session)) {
1605
1636
  process.stderr.write(
1606
- `Note: no headless transcript for session "${options.session}" 鈥?` +
1607
- "starting fresh (headless resume reads JSONL sessions only).\n",
1637
+ `Note: no persisted transcript for session "${options.session}"; ` +
1638
+ "starting fresh because no readable physical adapter contains it.\n",
1608
1639
  );
1609
1640
  }
1610
1641
  }