chainlesschain 0.166.21 → 0.166.24

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 (301) hide show
  1. package/README.md +67 -9
  2. package/package.json +4 -3
  3. package/src/assets/web-panel/assets/{AIOps-BjMnsUci.js → AIOps-DR-MWcZc.js} +1 -1
  4. package/src/assets/web-panel/assets/{ActionButton-DdYFP03A.js → ActionButton-DT8B7sEb.js} +1 -1
  5. package/src/assets/web-panel/assets/{Analytics-Bb8TuuK_.js → Analytics-asjh3dQJ.js} +3 -3
  6. package/src/assets/web-panel/assets/{AppLayout-Kn3TIOtk.js → AppLayout-DivQ491i.js} +5 -5
  7. package/src/assets/web-panel/assets/{Artifacts-4IxpqI_b.js → Artifacts-DPH2uUmy.js} +1 -1
  8. package/src/assets/web-panel/assets/{Audit-BOV2caqU.js → Audit-Bp2nLyc-.js} +1 -1
  9. package/src/assets/web-panel/assets/{BackgroundAgents-B86k-ay4.js → BackgroundAgents-CHS28khl.js} +1 -1
  10. package/src/assets/web-panel/assets/{Backup-C5_ie1e3.js → Backup-CKeaFSfz.js} +1 -1
  11. package/src/assets/web-panel/assets/{BaseInput-xpwg6QCW.js → BaseInput-CxwM9BAH.js} +1 -1
  12. package/src/assets/web-panel/assets/{Chat-CVZOcZau.js → Chat-DYLDwaCv.js} +4 -4
  13. package/src/assets/web-panel/assets/{ChatBubbleRenderer-D8fPYhUu.js → ChatBubbleRenderer-DdBJDBP0.js} +1 -1
  14. package/src/assets/web-panel/assets/{Checkbox-MKTq3zdP.js → Checkbox-uYTWOB8j.js} +1 -1
  15. package/src/assets/web-panel/assets/{Codegen-JUk3wzep.js → Codegen-CvYa_dwT.js} +1 -1
  16. package/src/assets/web-panel/assets/{Col-JPvTA0kC.js → Col-CanMAX4m.js} +1 -1
  17. package/src/assets/web-panel/assets/{Community-Tqgl87NQ.js → Community-B4WaDtHw.js} +1 -1
  18. package/src/assets/web-panel/assets/{Compact-BuAFYBmN.js → Compact-K93Uof_3.js} +1 -1
  19. package/src/assets/web-panel/assets/{Compliance-CXS9WIPZ.js → Compliance-CKeDLgUW.js} +1 -1
  20. package/src/assets/web-panel/assets/{Cowork-Ds2bFHrr.js → Cowork-P93grAeB.js} +3 -3
  21. package/src/assets/web-panel/assets/{Cron-C_dV_OeW.js → Cron-BSHnMtDn.js} +2 -2
  22. package/src/assets/web-panel/assets/{Crosschain-BsO6tIRo.js → Crosschain-epAOpUVJ.js} +1 -1
  23. package/src/assets/web-panel/assets/{DID-rNOFqBac.js → DID-ByjXfP7t.js} +2 -2
  24. package/src/assets/web-panel/assets/{Dashboard-C2fcKKVY.js → Dashboard-QztTU8tb.js} +2 -2
  25. package/src/assets/web-panel/assets/{Dropdown-Y7Ndr0X_.js → Dropdown-DhUc9yhN.js} +1 -1
  26. package/src/assets/web-panel/assets/{EmailListRenderer-DcP_uPmL.js → EmailListRenderer-C2sLhJJN.js} +1 -1
  27. package/src/assets/web-panel/assets/{FamilyGuardDashboard-Cwn3gDzk.js → FamilyGuardDashboard-CdfbWNDn.js} +1 -1
  28. package/src/assets/web-panel/assets/{Federation-ClQuOsqb.js → Federation-CcF_R7NW.js} +1 -1
  29. package/src/assets/web-panel/assets/{FormItemContext-DfwtmlcK.js → FormItemContext-Cm_X2IBk.js} +1 -1
  30. package/src/assets/web-panel/assets/{GenericCardRenderer-zNZhtbC5.js → GenericCardRenderer-DUi4NWlb.js} +1 -1
  31. package/src/assets/web-panel/assets/{Git-BZmdW-G5.js → Git-4Sq5FjBt.js} +2 -2
  32. package/src/assets/web-panel/assets/{Governance-CqBk4lEn.js → Governance-Dx2_v4V6.js} +1 -1
  33. package/src/assets/web-panel/assets/{Inference-Dbmt3ZXk.js → Inference-7Vr1xekR.js} +1 -1
  34. package/src/assets/web-panel/assets/{KnowledgeGraph-hMTH6qf3.js → KnowledgeGraph-Cnd2XOzf.js} +1 -1
  35. package/src/assets/web-panel/assets/{Logs-CkiYgiW2.js → Logs-B66QPVf-.js} +2 -2
  36. package/src/assets/web-panel/assets/{MarkdownRenderer-BL1FElXg.js → MarkdownRenderer-PLsEvhly.js} +1 -1
  37. package/src/assets/web-panel/assets/{Marketplace-CbB6wfin.js → Marketplace-BMIK9BmC.js} +1 -1
  38. package/src/assets/web-panel/assets/{McpTools-BSwiFtte.js → McpTools-BDbyp3J_.js} +3 -3
  39. package/src/assets/web-panel/assets/{Memory-B03PeHrz.js → Memory-CJdzfZGi.js} +2 -2
  40. package/src/assets/web-panel/assets/{MobileBridge-CRGrnd-X.js → MobileBridge-C2TH5Y3-.js} +1 -1
  41. package/src/assets/web-panel/assets/{MobileProjects-CE_5v2kO.js → MobileProjects-D1dYXkvV.js} +1 -1
  42. package/src/assets/web-panel/assets/{Mtc-Dp11QVx1.js → Mtc-B-4A1I1j.js} +4 -4
  43. package/src/assets/web-panel/assets/{MtcAudit-CYu-3JBu.js → MtcAudit-Bgcc9UOl.js} +5 -5
  44. package/src/assets/web-panel/assets/{Multisig-CGyJ0Xl3.js → Multisig-DqOe-etP.js} +3 -3
  45. package/src/assets/web-panel/assets/{NLProgramming-CoWi_ov1.js → NLProgramming-7VnhzE_6.js} +1 -1
  46. package/src/assets/web-panel/assets/Notes-BxawpeUQ.js +7 -0
  47. package/src/assets/web-panel/assets/{NotificationSettings-DX4I2b4W.js → NotificationSettings-Cr08G2aE.js} +1 -1
  48. package/src/assets/web-panel/assets/OrderTableRenderer-Ce8bEGlK.js +1 -0
  49. package/src/assets/web-panel/assets/{Organization-oopLO_tk.js → Organization-BC7lveGv.js} +4 -4
  50. package/src/assets/web-panel/assets/{Overflow-BFVvjMyf.js → Overflow-CakOW-G0.js} +1 -1
  51. package/src/assets/web-panel/assets/{P2P-CBy5t-Tk.js → P2P-Cf8CaOBZ.js} +2 -2
  52. package/src/assets/web-panel/assets/{PdhVaultBrowser--YWJNsu6.js → PdhVaultBrowser-Dc7b98W9.js} +3 -3
  53. package/src/assets/web-panel/assets/{Permissions-C2dZ8scb.js → Permissions-DGJyMEfS.js} +4 -4
  54. package/src/assets/web-panel/assets/{PersonalDataHub-Bs3l7Hlx.js → PersonalDataHub-DNIwSdwu.js} +6 -6
  55. package/src/assets/web-panel/assets/{Pipeline-DEBWbZuD.js → Pipeline-5B1S12wa.js} +1 -1
  56. package/src/assets/web-panel/assets/{Privacy-CjHBb6NU.js → Privacy-CMB6Ke5t.js} +1 -1
  57. package/src/assets/web-panel/assets/{ProjectInit-D2WipUz5.js → ProjectInit-D5PqTFiT.js} +2 -2
  58. package/src/assets/web-panel/assets/{ProjectSettings-B6WfnrGB.js → ProjectSettings-CbKNdSjV.js} +2 -2
  59. package/src/assets/web-panel/assets/Projects-ccXaHzYL.js +1 -0
  60. package/src/assets/web-panel/assets/{Providers-CCv5M_Dv.js → Providers-CJF5_-Gs.js} +1 -1
  61. package/src/assets/web-panel/assets/{QrScannerModal-CGthxU54.js → QrScannerModal-CT6iEAdi.js} +1 -1
  62. package/src/assets/web-panel/assets/{QuickAsk-CnPmXPFb.js → QuickAsk-Ci0h9mJ_.js} +1 -1
  63. package/src/assets/web-panel/assets/{Recommend-Df_tGEa9.js → Recommend-Da5mobZu.js} +1 -1
  64. package/src/assets/web-panel/assets/{RemoteSession-Z58N0Loe.js → RemoteSession-BaCY8eey.js} +2 -2
  65. package/src/assets/web-panel/assets/{Reputation-CZTBQ2Vt.js → Reputation-CaITfTsI.js} +1 -1
  66. package/src/assets/web-panel/assets/{Row-CdK3YpCQ.js → Row-DtUDamyP.js} +1 -1
  67. package/src/assets/web-panel/assets/{RssFeed-CFMVT5sb.js → RssFeed-DX27gFpg.js} +3 -3
  68. package/src/assets/web-panel/assets/{Search-DrF8RIvD.js → Search-DFL69osN.js} +1 -1
  69. package/src/assets/web-panel/assets/{Security-Ddk2f2DM.js → Security-BqGeoWv-.js} +3 -3
  70. package/src/assets/web-panel/assets/{Services-CCuK-VOo.js → Services-3z1WnEAc.js} +2 -2
  71. package/src/assets/web-panel/assets/{Skeleton-DxCpHzeM.js → Skeleton-C_OJQQ9Z.js} +1 -1
  72. package/src/assets/web-panel/assets/{Skills-t2oTDgcv.js → Skills-BY7aT6Mo.js} +1 -1
  73. package/src/assets/web-panel/assets/{Sla-Df63M9_R.js → Sla-BZv7DSaD.js} +1 -1
  74. package/src/assets/web-panel/assets/SpeechSettings-6lJKLhCn.js +1 -0
  75. package/src/assets/web-panel/assets/{SyncSettings-COd_tgPp.js → SyncSettings-B6D7STlI.js} +2 -2
  76. package/src/assets/web-panel/assets/{Tasks-CzDCcrik.js → Tasks-Co_FCZAO.js} +1 -1
  77. package/src/assets/web-panel/assets/{Templates-D-vfxTGA.js → Templates-CnY-9fgz.js} +1 -1
  78. package/src/assets/web-panel/assets/{Tenant-BlpT_Gxc.js → Tenant-B71yXfZ8.js} +1 -1
  79. package/src/assets/web-panel/assets/{Terminal-D5rq52Hg.js → Terminal-Dd_P7awo.js} +2 -2
  80. package/src/assets/web-panel/assets/{TimelineRenderer-DdoMndkK.js → TimelineRenderer-CvIEMyli.js} +1 -1
  81. package/src/assets/web-panel/assets/{Tokens-BhgBsI6g.js → Tokens-DknFBGOi.js} +1 -1
  82. package/src/assets/web-panel/assets/{Trigger-DwwzoikZ.js → Trigger-D_4nJONB.js} +1 -1
  83. package/src/assets/web-panel/assets/{Trust-HkTpzXFb.js → Trust-BNl21fa7.js} +1 -1
  84. package/src/assets/web-panel/assets/{UkeySign-D9nk6Ehe.js → UkeySign-CFrCI7uK.js} +1 -1
  85. package/src/assets/web-panel/assets/{VideoEditing-BKk0rfoy.js → VideoEditing-BVfY6JLg.js} +1 -1
  86. package/src/assets/web-panel/assets/{Wallet-IVWIU_Lq.js → Wallet-Cj9CAK0J.js} +4 -4
  87. package/src/assets/web-panel/assets/{WebAuthn-CFTCpfsG.js → WebAuthn-DcqZlzA3.js} +4 -4
  88. package/src/assets/web-panel/assets/{WorkflowEditor-Dnf4Obif.js → WorkflowEditor-Dfr_dMld.js} +1 -1
  89. package/src/assets/web-panel/assets/{chat-D2snERdj.js → chat-Yv6UF0AD.js} +1 -1
  90. package/src/assets/web-panel/assets/{colors-DKEjK1N1.js → colors-CDW_-1fs.js} +1 -1
  91. package/src/assets/web-panel/assets/{compact-item-BEDLwQdt.js → compact-item-BYOQvd-6.js} +1 -1
  92. package/src/assets/web-panel/assets/{createContext-DA9iW1a0.js → createContext-BCGO0BiP.js} +1 -1
  93. package/src/assets/web-panel/assets/devWarning-H-kXSuf-.js +1 -0
  94. package/src/assets/web-panel/assets/{hasIn-5l2xEcY9.js → hasIn-DY-70cfQ.js} +1 -1
  95. package/src/assets/web-panel/assets/{index-B7_W_rYd.js → index-366wfQBU.js} +1 -1
  96. package/src/assets/web-panel/assets/index-B0o4MeNK.js +1 -0
  97. package/src/assets/web-panel/assets/{index-CxEtQYdi.js → index-B9ZogJJM.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-B00GeekA.js → index-B9m5QAMg.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-C7sKbM5s.js → index-BBs2mv5M.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-CX1x4AFn.js → index-BFv1hzF6.js} +1 -1
  101. package/src/assets/web-panel/assets/index-BVafOL_I.js +1 -0
  102. package/src/assets/web-panel/assets/{index-DU2TXJu-.js → index-BXlEx4UH.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-e-e40id6.js → index-BayRTE5w.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-DXet1xol.js → index-Bb9nyts1.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-D7z4zB_a.js → index-Bf_Va0S-.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-fccZmC_h.js → index-Br3wQLVY.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-Bqc8tdIF.js → index-BvK4fjkk.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-BO9dQjpt.js → index-C40UdtlS.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-Csfb-7hw.js → index-C4UJA2ju.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-Td8ZwyoC.js → index-CB_Iw73G.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-BZ5lY2zx.js → index-CCwWp3mT.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-DpqtbXdE.js → index-CFa2fPCk.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-NJieh3T1.js → index-CIyHxV4u.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-Dbkghqn_.js → index-CUP-A2_h.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-DqwPFbOb.js → index-CUo27q9J.js} +3 -3
  116. package/src/assets/web-panel/assets/{index-B4QYBliR.js → index-CaT8trvf.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-BgfImyZI.js → index-CnZNbcux.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-Dbd7eEex.js → index-Cy2NE6AO.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-CbTPvp2_.js → index-CzeEEazr.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-5pW4t1iD.js → index-D--TEyDj.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-Dg2a9owQ.js → index-DCtsjhhT.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-B_eCoZgW.js → index-DLOf7BSz.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-7P1b8HZo.js → index-DM5c4pc-.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-CRPrHE7h.js → index-DRFC2Qt0.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-Bq5P3piS.js → index-DT_qVaaV.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-CjWltbi_.js → index-DUDoRk9r.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-CkMKuqUs.js → index-Dg-AQYDf.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-DLoalqRX.js → index-DuIPq5MX.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-CGlotREA.js → index-NYVBUAVN.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-yYEQXYaU.js → index-NaCESahy.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-CmruhzFi.js → index-RjIMPG0u.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-fgYk0QXO.js → index-Y9akzgFO.js} +1 -1
  133. package/src/assets/web-panel/assets/{index-DvV03Ayk.js → index-hZ0Eyrrw.js} +1 -1
  134. package/src/assets/web-panel/assets/{initDefaultProps-CPrcB1TC.js → initDefaultProps-CG99CcR4.js} +1 -1
  135. package/src/assets/web-panel/assets/{motion-BQ7mWRh_.js → motion-Z7MH0_0G.js} +1 -1
  136. package/src/assets/web-panel/assets/{move-CzOEq99p.js → move-BX67lOdq.js} +1 -1
  137. package/src/assets/web-panel/assets/{mtc-parser-BlQI5jrw.js → mtc-parser-CmAbG1fE.js} +1 -1
  138. package/src/assets/web-panel/assets/{omit-DlW4gxmv.js → omit-DiU5tI1_.js} +1 -1
  139. package/src/assets/web-panel/assets/{pickAttrs-BBYms5nP.js → pickAttrs-BGfvLrYL.js} +1 -1
  140. package/src/assets/web-panel/assets/{placementArrow-az2MPJ_7.js → placementArrow-CggLEgaJ.js} +1 -1
  141. package/src/assets/web-panel/assets/{responsiveObserve-D1-ibEol.js → responsiveObserve-t3nlghPZ.js} +1 -1
  142. package/src/assets/web-panel/assets/{slide-DHGqa4GA.js → slide-BkV4dL9s.js} +1 -1
  143. package/src/assets/web-panel/assets/{statusUtils-CYGDo6lD.js → statusUtils-qec1PUoC.js} +1 -1
  144. package/src/assets/web-panel/assets/{styleChecker-Cl2EM9K6.js → styleChecker-ChjX6T8D.js} +1 -1
  145. package/src/assets/web-panel/assets/{useFlexGapSupport-DdYhzuv1.js → useFlexGapSupport-B1jLoZcM.js} +1 -1
  146. package/src/assets/web-panel/assets/{useFs-DWumPuBW.js → useFs-C3X53s4E.js} +1 -1
  147. package/src/assets/web-panel/assets/{usePersonalDataHub-DxAO-Aqi.js → usePersonalDataHub-DOvbbnkZ.js} +1 -1
  148. package/src/assets/web-panel/assets/{vnode-CplsQf_N.js → vnode-Ie0TEVFT.js} +1 -1
  149. package/src/assets/web-panel/assets/{zoom-Cw5HXNSG.js → zoom-CRUMVS8l.js} +1 -1
  150. package/src/assets/web-panel/index.html +1 -1
  151. package/src/command-help-index.json +3 -3
  152. package/src/commands/agent.js +18 -1
  153. package/src/commands/evolution-benchmark.js +72 -0
  154. package/src/commands/evolution.js +2 -0
  155. package/src/commands/governed-skill-marketplace.js +142 -0
  156. package/src/commands/marketplace.js +4 -1
  157. package/src/commands/serve.js +41 -0
  158. package/src/commands/skill.js +3 -0
  159. package/src/data/changelog.json +39 -0
  160. package/src/gateways/ws/ws-agent-handler.js +59 -2
  161. package/src/gateways/ws/ws-server.js +2 -0
  162. package/src/harness/golden-transcript.js +1 -0
  163. package/src/harness/prompt-compressor.js +51 -5
  164. package/src/harness/provider-backed-compaction.js +28 -1
  165. package/src/harness/remote-session-registry.js +15 -3
  166. package/src/index.js +30 -4
  167. package/src/lazy-dispatch.js +15 -1
  168. package/src/lib/advisor-runtime.js +55 -2
  169. package/src/lib/app-server/cli-agent-kernel-adapter.js +4 -0
  170. package/src/lib/app-server/graph-runtime.js +32 -0
  171. package/src/lib/app-server/server.js +45 -1
  172. package/src/lib/app-server/websocket-transport.js +23 -0
  173. package/src/lib/autonomous-agent.js +63 -13
  174. package/src/lib/cowork/ab-comparator-cli.js +4 -3
  175. package/src/lib/cowork/debate-review-cli.js +4 -3
  176. package/src/lib/cowork/decision-kb-cli.js +5 -0
  177. package/src/lib/cowork-adapter.js +38 -16
  178. package/src/lib/evolution/agent-evolution-ingress.js +95 -15
  179. package/src/lib/evolution/agent-evolution-runtime-composition.js +82 -0
  180. package/src/lib/evolution/agent-evolution-session-lifecycle.js +46 -0
  181. package/src/lib/evolution/agent-model-projection.js +217 -0
  182. package/src/lib/evolution/bounded-descriptor-read.js +29 -0
  183. package/src/lib/evolution/controlled-skill-pilot-ledger-adapter.js +551 -0
  184. package/src/lib/evolution/controlled-skill-production-pilot.js +308 -18
  185. package/src/lib/evolution/evidence-backed-wiki-maintainer.js +10 -1
  186. package/src/lib/evolution/evidence-json-text.js +236 -0
  187. package/src/lib/evolution/evolution-artifact-ports.js +202 -21
  188. package/src/lib/evolution/evolution-deployment-loader.js +369 -0
  189. package/src/lib/evolution/evolution-eval-child-evidence-ledger-adapter.js +373 -0
  190. package/src/lib/evolution/evolution-eval-gate.js +14 -1
  191. package/src/lib/evolution/evolution-eval-process-supervisor-worker.mjs +14 -0
  192. package/src/lib/evolution/evolution-eval-process-supervisor.js +607 -0
  193. package/src/lib/evolution/evolution-evidence-artifact-adapter.js +14 -1
  194. package/src/lib/evolution/evolution-evidence-projector.js +240 -37
  195. package/src/lib/evolution/evolution-file-witness.js +153 -30
  196. package/src/lib/evolution/evolution-ledger-ports.js +1027 -66
  197. package/src/lib/evolution/evolution-ledger.js +66 -2
  198. package/src/lib/evolution/evolution-raw-crypto-shred.js +29 -15
  199. package/src/lib/evolution/evolution-raw-deletion-ledger-adapter.js +865 -0
  200. package/src/lib/evolution/evolution-release-train-domain-stages.js +769 -0
  201. package/src/lib/evolution/evolution-release-train-ledger-adapter.js +335 -0
  202. package/src/lib/evolution/evolution-release-train-stage-output-ledger-adapter.js +333 -0
  203. package/src/lib/evolution/evolution-release-train.js +586 -0
  204. package/src/lib/evolution/evolution-workbench-batch-executor.js +101 -144
  205. package/src/lib/evolution/evolution-workbench-control-ports.js +203 -0
  206. package/src/lib/evolution/evolution-workbench-file-resources.js +403 -0
  207. package/src/lib/evolution/evolution-workbench-projection.js +152 -25
  208. package/src/lib/evolution/evolution-workbench-registry-source.js +482 -0
  209. package/src/lib/evolution/evolution-workbench-review-ledger-adapter.js +823 -0
  210. package/src/lib/evolution/evolution-workbench-review-protocol.js +157 -0
  211. package/src/lib/evolution/evolution-workbench-rollback-authorization.js +57 -0
  212. package/src/lib/evolution/evolution-workbench-rollback-ledger-adapter.js +1016 -0
  213. package/src/lib/evolution/evolution-workbench-runtime.js +133 -0
  214. package/src/lib/evolution/evolution-workbench-version-control.js +70 -36
  215. package/src/lib/evolution/evolvable-artifact-ledger-adapter.js +736 -0
  216. package/src/lib/evolution/governed-knowledge-artifact-lifecycle.js +364 -0
  217. package/src/lib/evolution/governed-knowledge-candidate-rejection.js +343 -0
  218. package/src/lib/evolution/governed-knowledge-dependency-authority.js +227 -44
  219. package/src/lib/evolution/governed-knowledge-dependency-ledger-executor.js +95 -83
  220. package/src/lib/evolution/governed-knowledge-merge-ledger-executor.js +29 -2
  221. package/src/lib/evolution/governed-knowledge-merge-publisher-authority.js +31 -3
  222. package/src/lib/evolution/governed-knowledge-record.js +148 -0
  223. package/src/lib/evolution/governed-knowledge-revocation-record.js +135 -0
  224. package/src/lib/evolution/governed-knowledge-skill-rollback.js +475 -0
  225. package/src/lib/evolution/governed-knowledge-sync-ledger-adapter.js +92 -6
  226. package/src/lib/evolution/governed-knowledge-sync-merge-publisher.js +57 -4
  227. package/src/lib/evolution/governed-knowledge-sync.js +332 -99
  228. package/src/lib/evolution/governed-knowledge-wiki-tombstone.js +462 -0
  229. package/src/lib/evolution/governed-skill-marketplace-badge.js +208 -0
  230. package/src/lib/evolution/governed-skill-marketplace-candidate.js +330 -0
  231. package/src/lib/evolution/governed-skill-marketplace-cli-host.js +308 -0
  232. package/src/lib/evolution/governed-skill-marketplace-ledger-adapter.js +420 -0
  233. package/src/lib/evolution/governed-skill-marketplace.js +288 -5
  234. package/src/lib/evolution/governed-wiki-pruning-journal.js +302 -0
  235. package/src/lib/evolution/governed-wiki-pruning-ledger-adapter.js +459 -0
  236. package/src/lib/evolution/governed-wiki-pruning-maintenance.js +576 -0
  237. package/src/lib/evolution/governed-wiki-pruning-plan-authority.js +169 -0
  238. package/src/lib/evolution/governed-wiki-pruning-raw-shred.js +207 -0
  239. package/src/lib/evolution/governed-wiki-pruning-retrieval.js +587 -0
  240. package/src/lib/evolution/governed-wiki-pruning-runtime.js +153 -0
  241. package/src/lib/evolution/governed-wiki-pruning-skill-rollback.js +360 -0
  242. package/src/lib/evolution/governed-wiki-pruning.js +322 -143
  243. package/src/lib/evolution/independent-skill-revocation-source.js +231 -0
  244. package/src/lib/evolution/knowledge-wiki-source-admission.js +124 -0
  245. package/src/lib/evolution/knowledge-wiki-source-provenance.js +359 -0
  246. package/src/lib/evolution/progressive-canary-external-watchdog.js +578 -0
  247. package/src/lib/evolution/progressive-canary-traffic-worker.js +628 -0
  248. package/src/lib/evolution/progressive-canary-watchdog-file-store.js +285 -0
  249. package/src/lib/evolution/progressive-canary-watchdog-node-pki.js +265 -0
  250. package/src/lib/evolution/skill-candidate-registry.js +22 -0
  251. package/src/lib/evolution/skill-promotion-controller.js +25 -0
  252. package/src/lib/evolution/skill-promotion-review-ledger-adapter.js +100 -0
  253. package/src/lib/evolution/skill-registry-transition-ledger-adapter.js +131 -2
  254. package/src/lib/evolution/skill-release-registry.js +25 -4
  255. package/src/lib/evolution/skill-retrieval-revocation-authority.js +361 -0
  256. package/src/lib/evolution/skill-retrieval-revocation-ledger-adapter.js +346 -0
  257. package/src/lib/evolution/skill-revocation-propagation.js +467 -0
  258. package/src/lib/evolution/skill-target-matrix-eval.js +162 -11
  259. package/src/lib/evolution/skill-wiki-reconciliation.js +985 -0
  260. package/src/lib/evolution/skill-writer-inventory-manifest.js +15 -12
  261. package/src/lib/evolution/statistical-progressive-canary.js +845 -0
  262. package/src/lib/evolution/structured-memory-agent-control-plane.js +120 -0
  263. package/src/lib/evolution/structured-memory-authority-ledger-adapter.js +5 -1
  264. package/src/lib/evolution/structured-memory-promotion-receipt-writer.js +126 -0
  265. package/src/lib/evolution/wiki-informed-skill-proposer.js +127 -21
  266. package/src/lib/evolution/wiki-maintainer-ledger-adapter.js +760 -100
  267. package/src/lib/evolution/wiki-revision-protocol.js +120 -0
  268. package/src/lib/evolution/wiki-skill-proposal-ledger-adapter.js +307 -0
  269. package/src/lib/evolution/wiki-target-tombstone-revision.js +101 -0
  270. package/src/lib/evolution/wikiskill-benchmark-cli-host.js +178 -0
  271. package/src/lib/evolution/wikiskill-benchmark-execution-host.js +702 -0
  272. package/src/lib/evolution/wikiskill-benchmark-ledger-adapter.js +613 -0
  273. package/src/lib/evolution/wikiskill-benchmark.js +574 -0
  274. package/src/lib/goal-assess.js +17 -10
  275. package/src/lib/interactive-planner.js +9 -1
  276. package/src/lib/iteration-budget.js +16 -2
  277. package/src/lib/micro-compact.js +4 -1
  278. package/src/lib/model-failure-policy.js +21 -0
  279. package/src/lib/process-execution-broker/index.js +1 -0
  280. package/src/lib/process-execution-broker/windows-sandbox-helper.dll +0 -0
  281. package/src/lib/process-execution-broker/windows-sandbox-helper.exe +0 -0
  282. package/src/lib/process-execution-broker/windows-sandbox.cs +33 -15
  283. package/src/lib/read-file-page.js +191 -0
  284. package/src/lib/runnable-provider.js +2 -1
  285. package/src/lib/session-host-lease.js +11 -16
  286. package/src/lib/skill-retrieval-router.js +22 -1
  287. package/src/repl/agent-repl.js +127 -33
  288. package/src/runtime/agent-core.js +224 -80
  289. package/src/runtime/agent-runtime.js +43 -0
  290. package/src/runtime/coding-agent-contract-shared.cjs +7 -1
  291. package/src/runtime/fallback-model.js +143 -62
  292. package/src/runtime/headless-runner.js +54 -10
  293. package/src/runtime/headless-stream.js +53 -6
  294. package/src/runtime/runtime-factory.js +41 -2
  295. package/src/assets/web-panel/assets/Notes-CgU9DDo9.js +0 -7
  296. package/src/assets/web-panel/assets/OrderTableRenderer-CwHc15Zs.js +0 -1
  297. package/src/assets/web-panel/assets/Projects-FF_thRi6.js +0 -1
  298. package/src/assets/web-panel/assets/SpeechSettings-l7ox6KuX.js +0 -1
  299. package/src/assets/web-panel/assets/devWarning-DyhgpXPf.js +0 -1
  300. package/src/assets/web-panel/assets/index-Ck1jhFE0.js +0 -1
  301. package/src/assets/web-panel/assets/index-c8jJEHVs.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] 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 (0 =\n unlimited; interactive streams default\n to unlimited, unattended runs to 50)\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",
@@ -56,7 +56,7 @@
56
56
  "ecosystem": "Usage: chainlesschain ecosystem|eco [options] [command]\n\nPlugin Ecosystem 2.0 (Phase 64) — registry + deps + install + AI review +\npublish + revenue + recommend\n\nOptions:\n -h, --help display help for command\n\nCommands:\n config Show ecosystem config (severities, statuses, rules, defaults)\n severities List review severities\n statuses List publish / install statuses\n revenue-types List revenue event types\n dep-kinds List dependency kinds\n rules List heuristic AI review rules\n register [options] Register a new plugin (status=draft)\n plugins [options] List plugins\n show <pluginId> Show plugin details\n update-stats [options] <pluginId> Update download count / avg rating\n dep-add [options] <pluginId> Add a dependency to a plugin\n deps <pluginId> List direct dependencies of a plugin\n resolve <pluginId> Resolve dependency tree (detects conflicts + cycles)\n install [options] Install a plugin for a user (auto-fails on cycle/conflict)\n installs [options] List install records\n uninstall <installId> Mark an install as uninstalled\n review [options] <pluginId> Run heuristic AI code review (regex rules + score)\n review-show <reviewId> Show a single review record\n reviews [options] List review records\n sandbox [options] <pluginId> Record a sandbox test result (caller pushes outcome)\n sandbox-show <testId> Show a single sandbox test record\n sandbox-tests [options] List sandbox test records\n submit <pluginId> Submit a plugin for review (draft/rejected → reviewing)\n approve <pluginId> Approve a reviewing plugin\n reject [options] <pluginId> Reject a reviewing plugin (appends a rejection review record)\n publish [options] <pluginId> Publish an approved plugin (computes sourceHash)\n rev-record [options] Record a revenue event (splits via developerShareRatio)\n revenue [options] <developerId> Aggregate a developer's revenue\n recommend [options] Heuristic plugin recommendations for a user\n stats Show ecosystem stats\n maturity-statuses-v2 List V2 plugin maturity statuses\n install-lifecycle-v2 List V2 install lifecycle statuses\n default-max-active-plugins-per-developer Show V2 default max active plugins per developer\n max-active-plugins-per-developer Show current V2 max active plugins per developer\n set-max-active-plugins-per-developer <n> Set V2 max active plugins per developer\n default-max-pending-installs-per-user Show V2 default max pending installs per user\n max-pending-installs-per-user Show current V2 max pending installs per user\n set-max-pending-installs-per-user <n> Set V2 max pending installs per user\n default-auto-deprecate-after-ms Show V2 default auto-deprecate threshold (ms)\n auto-deprecate-after-ms Show current V2 auto-deprecate threshold (ms)\n set-auto-deprecate-after-ms <ms> Set V2 auto-deprecate threshold (ms)\n default-auto-archive-after-ms Show V2 default auto-archive threshold (ms)\n auto-archive-after-ms Show current V2 auto-archive threshold (ms)\n set-auto-archive-after-ms <ms> Set V2 auto-archive threshold (ms)\n active-plugin-count [options] Count V2 active plugins (optionally scoped)\n pending-install-count [options] Count V2 pending+resolving installs (optionally scoped)\n register-plugin-v2 [options] <plugin-id> Register V2 plugin (status=active)\n maturity-v2 <plugin-id> Show V2 plugin maturity\n set-maturity-v2 [options] <plugin-id> <status> Transition V2 plugin maturity\n deprecate-plugin [options] <plugin-id> Deprecate V2 plugin\n archive-plugin-v2 [options] <plugin-id> Archive V2 plugin\n remove-plugin-v2 [options] <plugin-id> Remove V2 plugin (terminal)\n touch-plugin-activity <plugin-id> Bump lastActivityAt for V2 plugin\n submit-install-v2 [options] <install-id> Submit V2 install (status=pending)\n install-status-v2 <install-id> Show V2 install status\n set-install-status-v2 [options] <install-id> <status> Transition V2 install status\n resolve-install [options] <install-id> Mark V2 install as resolving\n complete-install [options] <install-id> Mark V2 install as installed\n fail-install [options] <install-id> Mark V2 install as failed\n uninstall-install-v2 [options] <install-id> Mark V2 install as uninstalled (terminal)\n retry-failed-install [options] <install-id> Retry a failed V2 install (failed → pending)\n auto-deprecate-stale-plugins Bulk-flip stale V2 ACTIVE plugins to DEPRECATED\n auto-archive-long-deprecated Bulk-flip long-deprecated V2 plugins to ARCHIVED\n stats-v2 Show V2 ecosystem stats (maturity + install)\n help [command] display help for command\n",
57
57
  "encrypt": "Usage: chainlesschain encrypt [options] [command]\n\nFile encryption and database encryption management\n\nOptions:\n -h, --help display help for command\n\nCommands:\n file [options] <path> Encrypt a file with AES-256-GCM\n db [options] Enable database encryption tracking\n info [options] <path> Check if a file is encrypted\n status [options] Show database encryption status\n key-maturities-v2 [options] [V2] List crypto key maturity states\n job-lifecycles-v2 [options] [V2] List crypto job lifecycle states\n config-v2 [options] [V2] Show governance config\n set-max-active-keys-per-owner-v2 <n> [V2] Set per-owner active key cap\n set-max-pending-jobs-per-key-v2 <n> [V2] Set per-key pending job cap\n set-key-idle-ms-v2 <ms> [V2] Set key idle threshold (ms)\n set-job-stuck-ms-v2 <ms> [V2] Set job stuck threshold (ms)\n register-key-v2 [options] <id> [V2] Register a crypto key profile\n (PENDING)\n activate-key-v2 <id> [V2] Activate key (pending|rotated ->\n active)\n rotate-key-v2 <id> [V2] Rotate key (active -> rotated)\n retire-key-v2 <id> [V2] Retire key (terminal)\n touch-key-v2 <id> [V2] Bump key lastSeenAt\n get-key-v2 [options] <id> [V2] Show crypto key profile\n list-keys-v2 [options] [V2] List crypto key profiles\n create-job-v2 [options] <id> [V2] Create a queued V2 crypto job\n start-job-v2 <id> [V2] Start crypto job (queued ->\n running)\n complete-job-v2 <id> [V2] Complete crypto job (running ->\n completed)\n fail-job-v2 <id> [V2] Fail crypto job (running ->\n failed)\n cancel-job-v2 <id> [V2] Cancel crypto job (queued|running\n -> cancelled)\n get-job-v2 [options] <id> [V2] Show crypto job\n list-jobs-v2 [options] [V2] List V2 crypto jobs\n active-key-count-v2 [options] [V2] Count active crypto keys (optional\n --owner)\n pending-job-count-v2 [options] [V2] Count pending crypto jobs\n (queued+running)\n auto-rotate-idle-keys-v2 [options] [V2] Rotate idle active keys\n auto-fail-stuck-jobs-v2 [options] [V2] Fail stuck running crypto jobs\n stats-v2 [options] [V2] Show governance stats\n help [command] display help for command\n",
58
58
  "eval": "Usage: chainlesschain eval [options]\n\nRun the reliability eval suite (self-checking coding tasks) and report the\ntask-success rate\n\nOptions:\n --suite <name> Suite to run (default: \"builtin\")\n --model <model> Model for the agent runs\n --provider <provider> Provider for the agent runs\n --json Output the summary as JSON\n --keep Keep the per-task temp workspaces (debug)\n --otlp <file> Write OpenTelemetry (OTLP/JSON) spans for the\n run to a file\n --dry-run Use a no-op agent (exercise the harness/report\n without a model)\n --history <file> Append this run's summary (JSONL) for trend\n tracking\n --label <label> Tag this run in the history (e.g. a\n version/commit)\n --trend Report the pass-rate trend from --history\n instead of running (CI gate)\n --regression-threshold <pct> With --trend: pass-rate drop (in points) that\n fails the gate on its own (default: \"0\")\n -h, --help display help for command\n",
59
- "evolution": "Usage: chainlesschain evolution [options] [command]\n\nEvolution metrics and governance records — not model training or active Skill\npromotion\n\nOptions:\n -h, --help display help for command\n\nCommands:\n workbench Review governed Skill evolution evidence and versions\n knowledge Review encrypted governed knowledge conflicts\n assess [options] <name> <score> Assess and track a capability\n record-model-metrics [options] <model-id> Record a synthetic model metric estimate (no training)\n diagnose [options] Diagnose recorded evolution metrics\n repair [options] <issue> Apply a maintenance strategy to a recorded diagnosis\n predict [options] [user-id] Predict user behavior\n growth [options] Show growth log\n stats [options] Show capabilities and models overview\n export [options] <model-id> Export a model metric record for portability\n dimensions [options] List CAPABILITY_DIMENSION enum\n severities [options] List DIAGNOSIS_SEVERITY enum\n strategies [options] List REPAIR_STRATEGY enum\n milestones [options] List GROWTH_MILESTONE enum\n assess-v2 [options] <dimension> <score> Assess capability by canonical dimension\n capabilities-v2 [options] List V2 capabilities\n record-training-metrics-v2 [options] Record caller-supplied loss metrics (no training)\n training-metrics-v2 [options] List V2 training metric records\n diagnose-v2 [options] Diagnose recorded V2 evolution metrics\n diagnoses-v2 [options] List V2 diagnoses\n diagnosis-show [options] <id> Show a specific diagnosis\n repair-v2 [options] <diagnosis-id> Record a V2 maintenance strategy for a diagnosis\n predict-v2 [options] Project behavior from recorded V2 metrics\n record-milestone [options] <type> Record a growth milestone explicitly\n growth-v2 [options] List V2 growth milestones\n configure [options] Update evolution config\n config [options] Show evolution config\n stats-v2 [options] V2 evolution stats\n enums-v2 Show V2 enums (goal maturity + cycle lifecycle)\n config-v2 Show V2 config thresholds\n set-max-active-goals-v2 <n> Set max active goals per owner\n set-max-pending-cycles-v2 <n> Set max pending cycles per goal\n set-goal-idle-ms-v2 <n> Set goal idle threshold (ms)\n set-cycle-stuck-ms-v2 <n> Set cycle stuck threshold (ms)\n register-goal-v2 [options] <id> <owner> Register V2 evo goal\n activate-goal-v2 <id> Activate evo goal\n pause-goal-v2 <id> Pause evo goal\n archive-goal-v2 <id> Archive goal (terminal)\n touch-goal-v2 <id> Touch goal lastTouchedAt\n get-goal-v2 <id> Get V2 goal\n list-goals-v2 List all V2 goals\n create-cycle-v2 [options] <id> <goalId> Create V2 cycle (queued)\n start-cycle-v2 <id> Start cycle (queued→running)\n complete-cycle-v2 <id> Complete cycle (running→completed)\n fail-cycle-v2 <id> [reason] Fail cycle\n cancel-cycle-v2 <id> [reason] Cancel cycle\n get-cycle-v2 <id> Get V2 cycle\n list-cycles-v2 List all V2 cycles\n auto-pause-idle-v2 Auto-pause idle active goals\n auto-fail-stuck-v2 Auto-fail stuck running cycles\n gov-stats-v2 V2 governance aggregate stats\n help [command] display help for command\n",
59
+ "evolution": "Usage: chainlesschain evolution [options] [command]\n\nEvolution metrics and governance records — not model training or active Skill\npromotion\n\nOptions:\n -h, --help display help for command\n\nCommands:\n workbench Review governed Skill evolution evidence and versions\n knowledge Review encrypted governed knowledge conflicts\n benchmark Run and inspect governed WikiSkill benchmark reports\n assess [options] <name> <score> Assess and track a capability\n record-model-metrics [options] <model-id> Record a synthetic model metric estimate (no training)\n diagnose [options] Diagnose recorded evolution metrics\n repair [options] <issue> Apply a maintenance strategy to a recorded diagnosis\n predict [options] [user-id] Predict user behavior\n growth [options] Show growth log\n stats [options] Show capabilities and models overview\n export [options] <model-id> Export a model metric record for portability\n dimensions [options] List CAPABILITY_DIMENSION enum\n severities [options] List DIAGNOSIS_SEVERITY enum\n strategies [options] List REPAIR_STRATEGY enum\n milestones [options] List GROWTH_MILESTONE enum\n assess-v2 [options] <dimension> <score> Assess capability by canonical dimension\n capabilities-v2 [options] List V2 capabilities\n record-training-metrics-v2 [options] Record caller-supplied loss metrics (no training)\n training-metrics-v2 [options] List V2 training metric records\n diagnose-v2 [options] Diagnose recorded V2 evolution metrics\n diagnoses-v2 [options] List V2 diagnoses\n diagnosis-show [options] <id> Show a specific diagnosis\n repair-v2 [options] <diagnosis-id> Record a V2 maintenance strategy for a diagnosis\n predict-v2 [options] Project behavior from recorded V2 metrics\n record-milestone [options] <type> Record a growth milestone explicitly\n growth-v2 [options] List V2 growth milestones\n configure [options] Update evolution config\n config [options] Show evolution config\n stats-v2 [options] V2 evolution stats\n enums-v2 Show V2 enums (goal maturity + cycle lifecycle)\n config-v2 Show V2 config thresholds\n set-max-active-goals-v2 <n> Set max active goals per owner\n set-max-pending-cycles-v2 <n> Set max pending cycles per goal\n set-goal-idle-ms-v2 <n> Set goal idle threshold (ms)\n set-cycle-stuck-ms-v2 <n> Set cycle stuck threshold (ms)\n register-goal-v2 [options] <id> <owner> Register V2 evo goal\n activate-goal-v2 <id> Activate evo goal\n pause-goal-v2 <id> Pause evo goal\n archive-goal-v2 <id> Archive goal (terminal)\n touch-goal-v2 <id> Touch goal lastTouchedAt\n get-goal-v2 <id> Get V2 goal\n list-goals-v2 List all V2 goals\n create-cycle-v2 [options] <id> <goalId> Create V2 cycle (queued)\n start-cycle-v2 <id> Start cycle (queued→running)\n complete-cycle-v2 <id> Complete cycle (running→completed)\n fail-cycle-v2 <id> [reason] Fail cycle\n cancel-cycle-v2 <id> [reason] Cancel cycle\n get-cycle-v2 <id> Get V2 cycle\n list-cycles-v2 List all V2 cycles\n auto-pause-idle-v2 Auto-pause idle active goals\n auto-fail-stuck-v2 Auto-fail stuck running cycles\n gov-stats-v2 V2 governance aggregate stats\n help [command] display help for command\n",
60
60
  "evomap": "Usage: chainlesschain evomap [options] [command]\n\nEvoMap — gene exchange protocol for agent capabilities\n\nOptions:\n -h, --help display help for command\n\nCommands:\n search [options] <query> Search for genes on the hub\n download <geneId> Download a gene from the hub\n publish [options] Publish a gene to the hub\n list List locally installed genes\n hubs List configured EvoMap hubs\n federation Federated hub management and gene syncing\n gov EvoMap governance — ownership, proposals,\n voting\n enums-v2 Show V2 governance enums\n register-map-v2 [options] Register an evomap profile (pending)\n activate-map-v2 <id> Activate map\n stale-map-v2 <id> Mark map stale\n archive-map-v2 <id> Archive map (terminal)\n touch-map-v2 <id> Refresh lastTouchedAt\n get-map-v2 <id> Get map\n list-maps-v2 List maps\n create-evolution-v2 [options] Create an evolution (queued)\n start-evolution-v2 <id> Transition evolution to running\n complete-evolution-v2 <id> Transition evolution to completed\n fail-evolution-v2 [options] <id> Fail evolution\n cancel-evolution-v2 [options] <id> Cancel evolution\n get-evolution-v2 <id> Get evolution\n list-evolutions-v2 List evolutions\n set-max-active-maps-v2 <n> Set per-owner active cap\n set-max-pending-evolutions-v2 <n> Set per-map pending cap\n set-map-idle-ms-v2 <n> Set idle threshold\n set-evolution-stuck-ms-v2 <n> Set stuck threshold\n auto-stale-idle-maps-v2 Auto-stale idle maps\n auto-fail-stuck-evolutions-v2 Auto-fail stuck running evolutions\n gov-stats-v2 V2 governance aggregate stats\n help [command] display help for command\n",
61
61
  "execbe": "Usage: chainlesschain execbe [options] [command]\n\nExecution backend V2 governance\n\nOptions:\n -h, --help display help for command\n\nCommands:\n maturities-v2\n job-lifecycle-v2\n stats-v2\n config-v2\n register-backend-v2 <id> <owner> [kind]\n activate-backend-v2 <id>\n degrade-backend-v2 <id>\n retire-backend-v2 <id>\n touch-backend-v2 <id>\n get-backend-v2 <id>\n list-backends-v2\n create-job-v2 <id> <backendId> [cmd]\n start-job-v2 <id>\n succeed-job-v2 <id>\n fail-job-v2 <id> [reason]\n cancel-job-v2 <id> [reason]\n get-job-v2 <id>\n list-jobs-v2\n auto-degrade-idle-v2\n auto-fail-stuck-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 reset-state-v2\n help [command] display help for command\n",
62
62
  "export": "Usage: chainlesschain export [options] [command]\n\nExport knowledge base to external formats\n\nOptions:\n -h, --help display help for command\n\nCommands:\n markdown [options] Export notes as markdown files\n site [options] Export notes as a static HTML website\n target-maturities-v2 List V2 target maturity states\n export-job-lifecycles-v2 List V2 export-job lifecycle states\n stats-v2 V2 knowledge-exporter stats\n get-max-active-targets-v2 Get max active targets per owner (V2)\n set-max-active-targets-v2 <n> Set max active targets per owner (V2)\n get-max-pending-jobs-v2 Get max pending jobs per target (V2)\n set-max-pending-jobs-v2 <n> Set max pending jobs per target (V2)\n get-target-idle-ms-v2 Get target idle threshold (V2)\n set-target-idle-ms-v2 <ms> Set target idle threshold (V2)\n get-job-stuck-ms-v2 Get export-job stuck threshold (V2)\n set-job-stuck-ms-v2 <ms> Set export-job stuck threshold (V2)\n active-target-count-v2 <ownerId> Active target count for owner (V2)\n pending-job-count-v2 <targetId> Pending export-job count for target\n (V2)\n register-target-v2 [options] <id> Register a V2 export target\n get-target-v2 <id> Get a V2 target\n list-targets-v2 [options] List V2 targets\n set-target-status-v2 <id> <next> Set V2 target status\n activate-target-v2 <id> Activate a V2 target\n pause-target-v2 <id> Pause a V2 target\n archive-target-v2 <id> Archive a V2 target\n touch-target-v2 <id> Touch a V2 target\n create-export-job-v2 [options] <id> Create a V2 export job\n get-export-job-v2 <id> Get a V2 export job\n list-export-jobs-v2 [options] List V2 export jobs\n set-export-job-status-v2 <id> <next> Set V2 export-job status\n start-export-job-v2 <id> Start a V2 export job\n complete-export-job-v2 <id> Complete a V2 export job\n fail-export-job-v2 <id> Fail a V2 export job\n cancel-export-job-v2 <id> Cancel a V2 export job\n auto-pause-idle-targets-v2 Auto-pause idle V2 targets\n auto-fail-stuck-export-jobs-v2 Auto-fail stuck V2 export jobs\n help [command] display help for command\n",
@@ -86,7 +86,7 @@
86
86
  "logs": "Usage: chainlesschain logs [options] <id>\n\nPrint recent output from a background agent\n\nOptions:\n -n, --lines <n> Number of lines (default: \"100\")\n -h, --help display help for command\n",
87
87
  "loop": "Usage: chainlesschain loop [options] [parts...]\n\nRepeatedly run an agent prompt or `-- <command>` on a fixed interval\n\nOptions:\n --every <dur> Interval between iterations (e.g. 30s, 5m, 1.5h;\n bare number = seconds) (default: \"5m\")\n -n, --max-iterations <n> Stop after N iterations\n --until-exit-zero Stop once an iteration exits with code 0 (e.g.\n tests pass)\n --until <regex> Stop once an iteration's output matches this JS\n regex\n --dynamic Let each iteration self-pace via [[loop:next\n <dur>]] / [[loop:stop]] directives (prompt mode\n augments the prompt)\n --save [id] Persist this loop to a resumable session\n (auto-generates an id if omitted)\n --resume <id> Continue a previously --save'd loop session\n --json Print a JSON summary when the loop ends\n -h, --help display help for command\n",
88
88
  "lowcode": "Usage: chainlesschain lowcode [options] [command]\n\nLow-code application platform\n\nOptions:\n -h, --help display help for command\n\nCommands:\n create [options] <name> Create a new low-code application\n list [options] List all low-code applications\n preview <app-id> Preview application info\n publish <app-id> Publish an application\n components [options] List available built-in components\n datasource [options] <app-id> <name> <type> Add a data source to an application\n versions [options] <app-id> Show version history for an application\n rollback <app-id> <version> Rollback application to a previous version\n export [options] <app-id> Export application definition\n categories [options] List component categories (V2)\n datasource-types [options] List supported data source types (V2)\n statuses [options] List canonical app statuses (V2)\n components-v2 [options] List built-in components with category filter (V2)\n datasource-v2 [options] <app-id> <name> <type> Register a validated data source (V2)\n test-connection [options] <datasource-id> Heuristic connection check for a data source (V2)\n set-status <app-id> <status> Update app status with validated transition (V2)\n archive <app-id> Archive an application (V2)\n status-history [options] <app-id> Show status transition history for an app (V2)\n clone [options] <source-id> Clone an application (V2)\n export-json [options] <app-id> Export an app as canonical JSON (V2)\n import-json <file> Import an app from a canonical JSON file (V2)\n stats-v2 [options] Low-code platform statistics (V2)\n deploy [options] <app-id> Deploy application as static HTML bundle\n enums-v2 Show V2 enums (app maturity + build lifecycle)\n config-v2 Show V2 config thresholds\n set-max-active-apps-v2 <n> Set max active apps per owner\n set-max-pending-builds-v2 <n> Set max pending builds per app\n set-app-idle-ms-v2 <n> Set app idle threshold (ms)\n set-build-stuck-ms-v2 <n> Set build stuck threshold (ms)\n register-app-v2 [options] <id> <owner> Register V2 app\n activate-app-v2 <id> Activate app\n pause-app-v2 <id> Pause app\n archive-app-v2 <id> Archive app (terminal)\n touch-app-v2 <id> Touch app lastTouchedAt\n get-app-v2 <id> Get V2 app\n list-apps-v2 List V2 apps\n create-build-v2 [options] <id> <appId> Create V2 app build (queued)\n start-build-v2 <id> Start build\n succeed-build-v2 <id> Succeed build\n fail-build-v2 <id> [reason] Fail build\n cancel-build-v2 <id> [reason] Cancel build\n get-build-v2 <id> Get V2 build\n list-builds-v2 List V2 builds\n auto-pause-idle-v2 Auto-pause idle active apps\n auto-fail-stuck-v2 Auto-fail stuck building builds\n gov-stats-v2 V2 governance aggregate stats\n help [command] display help for command\n",
89
- "marketplace": "Usage: chainlesschain marketplace [options] [command]\n\nSkill marketplace — publish skill services, record invocations, view stats\n\nOptions:\n -h, --help display help for command\n\nCommands:\n status-types [options] List known service statuses\n invocation-statuses [options] List known invocation statuses\n publish [options] <name> Publish a skill service\n list [options] List skill services\n show [options] <service-id> Show full details of a skill service\n status [options] <service-id> <new-status> Transition service status (draft|published|deprecated|suspended)\n record [options] <service-id> Record a skill invocation against a published service\n invocations [options] List skill invocations\n stats [options] Aggregate invocation stats (optionally scoped to a service)\n service-statuses-v2 [options] List V2 service statuses (frozen enum)\n invocation-statuses-v2 [options] List V2 invocation statuses (frozen enum)\n pricing-models [options] List V2 pricing models (frozen enum)\n default-max-concurrent Show default per-service concurrency cap\n max-concurrent Show current per-service concurrency cap\n active-invocation-count [service-id] Show count of PENDING + RUNNING invocations (all services by default)\n set-max-concurrent <n> Set the per-service concurrency cap\n begin-v2 [options] <service-id> Begin a V2 invocation (creates PENDING, enforces cap)\n start-invocation [options] <invocation-id> Start a V2 invocation (PENDING → RUNNING)\n complete-invocation [options] <invocation-id> Complete a V2 invocation (RUNNING → SUCCESS)\n fail-invocation [options] <invocation-id> Fail a V2 invocation\n timeout-invocation [options] <invocation-id> Timeout a V2 invocation\n set-invocation-status [options] <invocation-id> <status> Set V2 invocation status via the state machine\n stats-v2 [options] V2 aggregated stats\n purchase [options] <itemId> Initiate a purchase. Large orders (≥ threshold) route through M-of-N multisig.\n consume [options] <proposalId> Execute a multisig-gated purchase after threshold reached (marks proposal consumed)\n help [command] display help for command\n",
89
+ "marketplace": "Usage: chainlesschain marketplace [options] [command]\n\nSkill marketplace — publish skill services, record invocations, view stats\n\nOptions:\n -h, --help display help for command\n\nCommands:\n serve-badge [options] <skill-name> Serve a read-only public Eval badge for one explicitly pinned listing\n inspect [options] <skill-name> Verify a signed Skill listing for the deployment's fixed target\n install [options] <skill-name> Persist verified candidate files and governance state; does not activate the Skill\n state <skill-name> Read the verified durable governed Skill state\n rollout [options] <skill-name> Advance exactly one stage using a verified Pilot receipt\n revoke [options] <skill-name> Roll back using a verified revocation receipt\n status-types [options] List known service statuses\n invocation-statuses [options] List known invocation statuses\n publish [options] <name> Publish a skill service\n list [options] List skill services\n show [options] <service-id> Show full details of a skill service\n status [options] <service-id> <new-status> Transition service status (draft|published|deprecated|suspended)\n record [options] <service-id> Record a skill invocation against a published service\n invocations [options] List skill invocations\n stats [options] Aggregate invocation stats (optionally scoped to a service)\n service-statuses-v2 [options] List V2 service statuses (frozen enum)\n invocation-statuses-v2 [options] List V2 invocation statuses (frozen enum)\n pricing-models [options] List V2 pricing models (frozen enum)\n default-max-concurrent Show default per-service concurrency cap\n max-concurrent Show current per-service concurrency cap\n active-invocation-count [service-id] Show count of PENDING + RUNNING invocations (all services by default)\n set-max-concurrent <n> Set the per-service concurrency cap\n begin-v2 [options] <service-id> Begin a V2 invocation (creates PENDING, enforces cap)\n start-invocation [options] <invocation-id> Start a V2 invocation (PENDING → RUNNING)\n complete-invocation [options] <invocation-id> Complete a V2 invocation (RUNNING → SUCCESS)\n fail-invocation [options] <invocation-id> Fail a V2 invocation\n timeout-invocation [options] <invocation-id> Timeout a V2 invocation\n set-invocation-status [options] <invocation-id> <status> Set V2 invocation status via the state machine\n stats-v2 [options] V2 aggregated stats\n purchase [options] <itemId> Initiate a purchase. Large orders (≥ threshold) route through M-of-N multisig.\n consume [options] <proposalId> Execute a multisig-gated purchase after threshold reached (marks proposal consumed)\n help [command] display help for command\n",
90
90
  "matrix": "Usage: chainlesschain matrix [options] [command]\n\nMatrix bridge — rooms, messaging, E2EE\n\nOptions:\n -h, --help display help for command\n\nCommands:\n login [options] Login to a Matrix homeserver\n rooms [options] List joined rooms\n send [options] <room-id> <message> Send a message to a room\n messages [options] <room-id> Get messages from a room\n join <room-id> Join a Matrix room\n thread Matrix threaded replies (m.thread\n relation)\n space Matrix Spaces — hierarchical room\n grouping (m.space)\n enums-v2 Show V2 enums\n register-room-v2 [options] Register a matrix room profile (pending)\n activate-room-v2 <id> Activate room\n mute-room-v2 <id> Mute room\n archive-room-v2 <id> Archive room (terminal)\n touch-room-v2 <id> Refresh lastTouchedAt\n get-room-v2 <id> Get a room\n list-rooms-v2 List rooms\n create-msg-v2 [options] Create a matrix message (queued)\n start-msg-v2 <id> Transition msg to sending\n deliver-msg-v2 <id> Transition msg to delivered\n fail-msg-v2 [options] <id> Fail msg\n cancel-msg-v2 [options] <id> Cancel msg\n get-msg-v2 <id> Get msg\n list-msgs-v2 List msgs\n set-max-active-rooms-v2 <n> Set per-owner active cap\n set-max-pending-msgs-v2 <n> Set per-room pending cap\n set-room-idle-ms-v2 <n> Set idle threshold\n set-msg-stuck-ms-v2 <n> Set stuck threshold\n auto-mute-idle-rooms-v2 Auto-mute idle rooms\n auto-fail-stuck-msgs-v2 Auto-fail stuck sending msgs\n stats-v2 V2 aggregate stats\n help [command] display help for command\n",
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",
@@ -15,6 +15,7 @@ import {
15
15
  captureAgentSkillOutcomeIndex,
16
16
  } from "../lib/evolution/agent-evolution-runtime-composition-brand.js";
17
17
  import { captureSkillVectorAuthority } from "../lib/skill-vector-authority.js";
18
+ import { captureSkillRetrievalRevocationReader } from "../lib/evolution/skill-retrieval-revocation-authority.js";
18
19
  import { resolvePromptText } from "../runtime/system-prompt.js";
19
20
  import {
20
21
  makeFallbackChatFn,
@@ -276,6 +277,12 @@ export function registerAgentCommand(program, dependencies = {}) {
276
277
  dependencies.skillVectorAuthority == null
277
278
  ? null
278
279
  : captureSkillVectorAuthority(dependencies.skillVectorAuthority);
280
+ const skillRetrievalRevocationReader =
281
+ dependencies.skillRetrievalRevocationReader == null
282
+ ? null
283
+ : captureSkillRetrievalRevocationReader(
284
+ dependencies.skillRetrievalRevocationReader,
285
+ );
279
286
  program
280
287
  .command("agent")
281
288
  .aliases(["a", "exec"])
@@ -458,7 +465,10 @@ export function registerAgentCommand(program, dependencies = {}) {
458
465
  "Headless output: text | json | stream-json",
459
466
  "text",
460
467
  )
461
- .option("--max-turns <n>", "Cap agent loop iterations (headless)")
468
+ .option(
469
+ "--max-turns <n>",
470
+ "Cap agent loop iterations (0 = unlimited; interactive streams default to unlimited, unattended runs to 50)",
471
+ )
462
472
  .option(
463
473
  "--json-schema <file>",
464
474
  "Headless structured output: final reply must be JSON validating against this schema (invalid replies retried)",
@@ -1572,6 +1582,9 @@ export function registerAgentCommand(program, dependencies = {}) {
1572
1582
  claudeStorageLaunchEnv,
1573
1583
  ...(skillOutcomeIndex === null ? {} : { skillOutcomeIndex }),
1574
1584
  ...(skillVectorAuthority === null ? {} : { skillVectorAuthority }),
1585
+ ...(skillRetrievalRevocationReader === null
1586
+ ? {}
1587
+ : { skillRetrievalRevocationReader }),
1575
1588
  ...(evolutionComposition === null
1576
1589
  ? {}
1577
1590
  : { evolutionIngress: evolutionComposition.evolutionIngress }),
@@ -1914,6 +1927,9 @@ export function registerAgentCommand(program, dependencies = {}) {
1914
1927
  claudeStorageLaunchEnv,
1915
1928
  ...(skillOutcomeIndex === null ? {} : { skillOutcomeIndex }),
1916
1929
  ...(skillVectorAuthority === null ? {} : { skillVectorAuthority }),
1930
+ ...(skillRetrievalRevocationReader === null
1931
+ ? {}
1932
+ : { skillRetrievalRevocationReader }),
1917
1933
  ...(evolutionComposition === null
1918
1934
  ? {}
1919
1935
  : { evolutionIngress: evolutionComposition.evolutionIngress }),
@@ -2028,6 +2044,7 @@ export function registerAgentCommand(program, dependencies = {}) {
2028
2044
  evolutionComposition,
2029
2045
  skillOutcomeIndex,
2030
2046
  skillVectorAuthority,
2047
+ skillRetrievalRevocationReader,
2031
2048
  }).createAgentRuntime({
2032
2049
  model: options.model,
2033
2050
  thinking,
@@ -0,0 +1,72 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import path from "node:path";
3
+
4
+ import { isWikiSkillBenchmarkCliHost } from "../lib/evolution/wikiskill-benchmark-cli-host.js";
5
+
6
+ const MAX_INPUT_BYTES = 4 * 1024 * 1024;
7
+
8
+ function host(value) {
9
+ if (!isWikiSkillBenchmarkCliHost(value)) {
10
+ throw new Error(
11
+ "WikiSkill Benchmark is unavailable: a trusted deployment host is required",
12
+ );
13
+ }
14
+ return value;
15
+ }
16
+
17
+ async function jsonFile(file, label) {
18
+ const target = path.resolve(file);
19
+ const bytes = await readFile(target);
20
+ if (bytes.length < 1 || bytes.length > MAX_INPUT_BYTES)
21
+ throw new Error(`${label} file size is invalid`);
22
+ let value;
23
+ try {
24
+ value = JSON.parse(bytes.toString("utf8"));
25
+ } catch {
26
+ throw new Error(`${label} is not valid JSON`);
27
+ }
28
+ if (!value || typeof value !== "object" || Array.isArray(value))
29
+ throw new Error(`${label} must contain a JSON object`);
30
+ return value;
31
+ }
32
+
33
+ function output(value) {
34
+ console.log(JSON.stringify(value, null, 2));
35
+ }
36
+
37
+ export function registerWikiSkillBenchmarkCommands(
38
+ evolution,
39
+ { wikiSkillBenchmarkHost = null } = {},
40
+ ) {
41
+ const benchmark = evolution
42
+ .command("benchmark")
43
+ .description("Run and inspect governed WikiSkill benchmark reports");
44
+
45
+ benchmark
46
+ .command("run <plan-file> <execution-manifest-file>")
47
+ .description("Execute, attest, and durably retain one benchmark plan")
48
+ .option("--effective-at <timestamp>", "Canonical effective timestamp")
49
+ .action(async (planFile, executionManifestFile, options) => {
50
+ const trustedHost = host(wikiSkillBenchmarkHost);
51
+ const [plan, executionManifest] = await Promise.all([
52
+ jsonFile(planFile, "benchmark plan"),
53
+ jsonFile(executionManifestFile, "benchmark execution manifest"),
54
+ ]);
55
+ output(
56
+ await trustedHost.run({
57
+ plan,
58
+ executionManifest,
59
+ effectiveAt: options.effectiveAt ?? null,
60
+ }),
61
+ );
62
+ });
63
+
64
+ benchmark
65
+ .command("show <report-digest>")
66
+ .description("Read and reverify one retained benchmark report")
67
+ .action(async (reportDigest) => {
68
+ const result = await host(wikiSkillBenchmarkHost).show(reportDigest);
69
+ if (!result) throw new Error("WikiSkill Benchmark report was not found");
70
+ output(result);
71
+ });
72
+ }
@@ -12,6 +12,7 @@ import { parseJsonOption } from "../lib/parse-json-option.js";
12
12
  import { bootstrap, shutdown } from "../runtime/bootstrap.js";
13
13
  import { registerEvolutionWorkbenchCommands } from "./evolution-workbench.js";
14
14
  import { registerGovernedKnowledgeCommands } from "./evolution-knowledge.js";
15
+ import { registerWikiSkillBenchmarkCommands } from "./evolution-benchmark.js";
15
16
  import {
16
17
  assessCapability,
17
18
  recordIncrementalModelMetrics,
@@ -52,6 +53,7 @@ export function registerEvolutionCommand(program, dependencies = {}) {
52
53
 
53
54
  registerEvolutionWorkbenchCommands(evolution, dependencies);
54
55
  registerGovernedKnowledgeCommands(evolution, dependencies);
56
+ registerWikiSkillBenchmarkCommands(evolution, dependencies);
55
57
 
56
58
  // evolution assess <name> <score>
57
59
  evolution
@@ -0,0 +1,142 @@
1
+ import { isGovernedSkillMarketplaceCliHost } from "../lib/evolution/governed-skill-marketplace-cli-host.js";
2
+ import { startGovernedSkillMarketplaceBadgeServer } from "../lib/evolution/governed-skill-marketplace-badge.js";
3
+ import { intArg } from "../lib/cli-arg.js";
4
+
5
+ function host(value) {
6
+ if (!isGovernedSkillMarketplaceCliHost(value))
7
+ throw new Error(
8
+ "Governed Skill marketplace is unavailable: a trusted deployment host is required",
9
+ );
10
+ return value;
11
+ }
12
+
13
+ function output(value) {
14
+ console.log(JSON.stringify(value, null, 2));
15
+ }
16
+
17
+ export function registerGovernedSkillMarketplaceCommands(
18
+ marketplace,
19
+ { marketplaceHost = null } = {},
20
+ ) {
21
+ marketplace
22
+ .command("serve-badge <skill-name>")
23
+ .description(
24
+ "Serve a read-only public Eval badge for one explicitly pinned listing",
25
+ )
26
+ .requiredOption("--skill-version <version>", "Exact public catalog version")
27
+ .requiredOption(
28
+ "--manifest <digest>",
29
+ "Explicitly approved manifest digest",
30
+ )
31
+ .option(
32
+ "--listen <ip>",
33
+ "Bind IP; non-loopback explicitly publishes the badge",
34
+ "127.0.0.1",
35
+ )
36
+ .option(
37
+ "--port <port>",
38
+ "HTTP port (0 selects an available port)",
39
+ intArg("--port", { min: 0, max: 65535 }),
40
+ 8321,
41
+ )
42
+ .option(
43
+ "--snapshot-seconds <seconds>",
44
+ "Snapshot lifetime; expiration requires explicit restart",
45
+ intArg("--snapshot-seconds", { min: 1, max: 3600 }),
46
+ 600,
47
+ )
48
+ .action(async (skillName, options) => {
49
+ const service = await startGovernedSkillMarketplaceBadgeServer({
50
+ marketplaceHost: host(marketplaceHost),
51
+ skillName,
52
+ version: options.skillVersion,
53
+ manifestDigest: options.manifest,
54
+ listen: options.listen,
55
+ port: options.port,
56
+ snapshotTtlMs: options.snapshotSeconds * 1000,
57
+ });
58
+ const close = () => {
59
+ service.close().catch(() => {
60
+ process.exitCode = 1;
61
+ });
62
+ };
63
+ process.once("SIGINT", close);
64
+ process.once("SIGTERM", close);
65
+ service.server.once("close", () => {
66
+ process.removeListener("SIGINT", close);
67
+ process.removeListener("SIGTERM", close);
68
+ });
69
+ console.log(`Public Eval badge: ${service.url}`);
70
+ });
71
+
72
+ marketplace
73
+ .command("inspect <skill-name>")
74
+ .description(
75
+ "Verify a signed Skill listing for the deployment's fixed target",
76
+ )
77
+ .option("--skill-version <version>", "Exact catalog version")
78
+ .action(async (skillName, options) =>
79
+ output(
80
+ await host(marketplaceHost).inspect({
81
+ skillName,
82
+ version: options.skillVersion ?? null,
83
+ }),
84
+ ),
85
+ );
86
+
87
+ marketplace
88
+ .command("install <skill-name>")
89
+ .description(
90
+ "Persist verified candidate files and governance state; does not activate the Skill",
91
+ )
92
+ .option("--skill-version <version>", "Exact catalog version")
93
+ .requiredOption(
94
+ "--manifest <digest>",
95
+ "Manifest digest returned by inspect",
96
+ )
97
+ .option(
98
+ "--expected-state <digest>",
99
+ "Current state digest for an update; omitted for first stage",
100
+ )
101
+ .action(async (skillName, options) =>
102
+ output(
103
+ await host(marketplaceHost).install({
104
+ skillName,
105
+ version: options.skillVersion ?? null,
106
+ manifestDigest: options.manifest,
107
+ expectedStateDigest: options.expectedState ?? null,
108
+ }),
109
+ ),
110
+ );
111
+
112
+ marketplace
113
+ .command("state <skill-name>")
114
+ .description("Read the verified durable governed Skill state")
115
+ .action(async (skillName) =>
116
+ output(await host(marketplaceHost).state({ skillName })),
117
+ );
118
+
119
+ for (const operation of ["rollout", "revoke"]) {
120
+ marketplace
121
+ .command(`${operation} <skill-name>`)
122
+ .description(
123
+ operation === "rollout"
124
+ ? "Advance exactly one stage using a verified Pilot receipt"
125
+ : "Roll back using a verified revocation receipt",
126
+ )
127
+ .requiredOption("--expected-state <digest>", "Exact current state digest")
128
+ .requiredOption(
129
+ "--receipt <reference>",
130
+ "Reference resolved and verified by deployment authority",
131
+ )
132
+ .action(async (skillName, options) =>
133
+ output(
134
+ await host(marketplaceHost)[operation]({
135
+ skillName,
136
+ expectedStateDigest: options.expectedState,
137
+ receiptRef: options.receipt,
138
+ }),
139
+ ),
140
+ );
141
+ }
142
+ }
@@ -5,6 +5,7 @@
5
5
  */
6
6
 
7
7
  import chalk from "chalk";
8
+ import { registerGovernedSkillMarketplaceCommands } from "./governed-skill-marketplace.js";
8
9
  import { intArg, floatArg } from "../lib/cli-arg.js";
9
10
  import { logger } from "../lib/logger.js";
10
11
  import { parseJsonOption } from "../lib/parse-json-option.js";
@@ -82,13 +83,15 @@ function _printService(s) {
82
83
  logger.log(` ${chalk.bold("Invocations:")} ${s.invocationCount}`);
83
84
  }
84
85
 
85
- export function registerMarketplaceCommand(program) {
86
+ export function registerMarketplaceCommand(program, dependencies = {}) {
86
87
  const mp = program
87
88
  .command("marketplace")
88
89
  .description(
89
90
  "Skill marketplace — publish skill services, record invocations, view stats",
90
91
  );
91
92
 
93
+ registerGovernedSkillMarketplaceCommands(mp, dependencies);
94
+
92
95
  mp.command("status-types")
93
96
  .description("List known service statuses")
94
97
  .option("--json", "Output as JSON")