chainlesschain 0.162.174 → 0.162.176

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 (281) hide show
  1. package/package.json +10 -10
  2. package/src/assets/web-panel/assets/{AIOps-Dcl-X1Hw.js → AIOps-BDLu5Elz.js} +1 -1
  3. package/src/assets/web-panel/assets/{ActionButton-ClMh9HzT.js → ActionButton-DH5us-CK.js} +1 -1
  4. package/src/assets/web-panel/assets/{Analytics-DPj0rSQ5.js → Analytics-BZ0u8IFG.js} +3 -3
  5. package/src/assets/web-panel/assets/AppLayout-Duu8xR14.js +9 -0
  6. package/src/assets/web-panel/assets/{Artifacts-L8781rE8.js → Artifacts-Br2YBbh_.js} +1 -1
  7. package/src/assets/web-panel/assets/{Audit-CffB6WIP.js → Audit-C3C6a482.js} +1 -1
  8. package/src/assets/web-panel/assets/{BackgroundAgents-BkLhayyY.js → BackgroundAgents-CzHvebcj.js} +1 -1
  9. package/src/assets/web-panel/assets/{Backup-BQnwFI78.js → Backup-DZNHYDFd.js} +1 -1
  10. package/src/assets/web-panel/assets/{BaseInput-xuUGHQch.js → BaseInput-VRiC4fIx.js} +1 -1
  11. package/src/assets/web-panel/assets/{Chat-feQXwWrg.js → Chat-Cm08WWAD.js} +5 -5
  12. package/src/assets/web-panel/assets/ChatBubbleRenderer-CGHYrugQ.js +1 -0
  13. package/src/assets/web-panel/assets/{Checkbox-DVaIiUGW.js → Checkbox-DtByk7d7.js} +1 -1
  14. package/src/assets/web-panel/assets/{Codegen-D2kEnzeU.js → Codegen-CphXXOfD.js} +1 -1
  15. package/src/assets/web-panel/assets/{Col-azDoyusS.js → Col-Hz86TnLR.js} +1 -1
  16. package/src/assets/web-panel/assets/{Community-OZdnPWM5.js → Community-HP03ltpD.js} +1 -1
  17. package/src/assets/web-panel/assets/{Compact-VDMvBN-C.js → Compact-B_N1mqQz.js} +1 -1
  18. package/src/assets/web-panel/assets/{Compliance-CPJ_zgQ1.js → Compliance-CVztRpi8.js} +1 -1
  19. package/src/assets/web-panel/assets/{Cowork-iRBwcsOA.js → Cowork-wUVOyZih.js} +4 -4
  20. package/src/assets/web-panel/assets/{Cron-DrxrspUz.js → Cron-DW5TLJKw.js} +2 -2
  21. package/src/assets/web-panel/assets/{Crosschain-D-rkAZXF.js → Crosschain-CrAFGhWH.js} +1 -1
  22. package/src/assets/web-panel/assets/{DID-5Pp1Xnmr.js → DID-pA-oD8ke.js} +2 -2
  23. package/src/assets/web-panel/assets/Dashboard-CXrd5gAw.js +3 -0
  24. package/src/assets/web-panel/assets/{Dropdown-BWj_E0Ie.js → Dropdown-EweJcsek.js} +1 -1
  25. package/src/assets/web-panel/assets/{EmailListRenderer-BT-wgSEh.js → EmailListRenderer-C9xVLPG4.js} +1 -1
  26. package/src/assets/web-panel/assets/{FamilyGuardDashboard-1PzH23pa.js → FamilyGuardDashboard-CDcEEqlu.js} +1 -1
  27. package/src/assets/web-panel/assets/{Federation-BxMIXGC6.js → Federation-DtZda9A_.js} +1 -1
  28. package/src/assets/web-panel/assets/{FormItemContext-CyJobBln.js → FormItemContext-CiYdcVz3.js} +1 -1
  29. package/src/assets/web-panel/assets/{GenericCardRenderer-YkjFuQTN.js → GenericCardRenderer-DA13uwA0.js} +1 -1
  30. package/src/assets/web-panel/assets/{Git-C2a98Wp_.js → Git-DzRhZD1O.js} +2 -2
  31. package/src/assets/web-panel/assets/{Governance-DKL3Fl84.js → Governance-D5RMgOSb.js} +1 -1
  32. package/src/assets/web-panel/assets/{Inference-BJ2cQC_3.js → Inference-BgrPfSNk.js} +1 -1
  33. package/src/assets/web-panel/assets/{KnowledgeGraph-DBAsOngt.js → KnowledgeGraph-DzjnD571.js} +1 -1
  34. package/src/assets/web-panel/assets/{Logs-COt8g9LO.js → Logs-BhWzVDtN.js} +2 -2
  35. package/src/assets/web-panel/assets/{MarkdownRenderer-3Lfht1Fd.js → MarkdownRenderer-BDape9cx.js} +1 -1
  36. package/src/assets/web-panel/assets/{Marketplace-C9Zk9Pb2.js → Marketplace-DJtL5GV7.js} +1 -1
  37. package/src/assets/web-panel/assets/{McpTools-DDWDFWPO.js → McpTools-CZcQygI7.js} +5 -5
  38. package/src/assets/web-panel/assets/{Memory-BRmVye_o.js → Memory-DUWSDUUu.js} +2 -2
  39. package/src/assets/web-panel/assets/{MobileBridge-CppBbWpD.js → MobileBridge-BTwq2WKY.js} +1 -1
  40. package/src/assets/web-panel/assets/MobileProjects-NZvvfDME.js +1 -0
  41. package/src/assets/web-panel/assets/{Mtc-CcWpeGa6.js → Mtc-BiGugEQm.js} +6 -6
  42. package/src/assets/web-panel/assets/{MtcAudit-BcllEq0K.js → MtcAudit-DY7a6gUe.js} +4 -4
  43. package/src/assets/web-panel/assets/{Multisig-BFD1CarL.js → Multisig-BQbDu_w7.js} +3 -3
  44. package/src/assets/web-panel/assets/{NLProgramming-QNXXYvjz.js → NLProgramming-CM2wXTLv.js} +1 -1
  45. package/src/assets/web-panel/assets/{Notes-07YwgQVy.js → Notes-DI6gGs1v.js} +4 -4
  46. package/src/assets/web-panel/assets/{NotificationSettings-bOccEInE.js → NotificationSettings-BsZOLWAB.js} +1 -1
  47. package/src/assets/web-panel/assets/{OrderTableRenderer-DlRi29WL.js → OrderTableRenderer-C48mu09U.js} +1 -1
  48. package/src/assets/web-panel/assets/{Organization-CBaezzEr.js → Organization-Cds0_tXr.js} +4 -4
  49. package/src/assets/web-panel/assets/{Overflow-Bl5NohFO.js → Overflow-WunYMD87.js} +1 -1
  50. package/src/assets/web-panel/assets/{P2P-CLMal9Aw.js → P2P-Bo6j4DDv.js} +2 -2
  51. package/src/assets/web-panel/assets/{PdhVaultBrowser-CGO0NITk.js → PdhVaultBrowser-Bh2XPD5f.js} +3 -3
  52. package/src/assets/web-panel/assets/{Permissions-CPSw48E2.js → Permissions-EMvMMC8N.js} +3 -3
  53. package/src/assets/web-panel/assets/{PersonalDataHub-CDM5n134.js → PersonalDataHub-AX3ypUDV.js} +2 -2
  54. package/src/assets/web-panel/assets/{Pipeline-BdsqG7WV.js → Pipeline-BOx8HOgL.js} +1 -1
  55. package/src/assets/web-panel/assets/{Privacy-B6L4E-M7.js → Privacy-tBeTVQVM.js} +1 -1
  56. package/src/assets/web-panel/assets/{ProjectInit-DXPyZKRs.js → ProjectInit-CVYg1W4M.js} +2 -2
  57. package/src/assets/web-panel/assets/{ProjectSettings-BrCC3xYT.js → ProjectSettings-Dvt5I7y1.js} +2 -2
  58. package/src/assets/web-panel/assets/{Projects-BYmuHC2q.js → Projects-Cc7FC9-e.js} +1 -1
  59. package/src/assets/web-panel/assets/{Providers-CbCe2eUl.js → Providers-Ct8xqY-E.js} +1 -1
  60. package/src/assets/web-panel/assets/{QrScannerModal-DkukgCrR.js → QrScannerModal-Cni8Ooja.js} +1 -1
  61. package/src/assets/web-panel/assets/{QuickAsk-D-htOrV8.js → QuickAsk-BJVLKdxr.js} +1 -1
  62. package/src/assets/web-panel/assets/{Recommend-Bm7SIfzu.js → Recommend-DPG8Rbbm.js} +1 -1
  63. package/src/assets/web-panel/assets/{RemoteSession-C9rP-iMc.js → RemoteSession-DsdR7dCt.js} +2 -2
  64. package/src/assets/web-panel/assets/{Reputation-kGlUgbsl.js → Reputation-Csg1YM-b.js} +1 -1
  65. package/src/assets/web-panel/assets/{Row-PBupbbUA.js → Row-D9DoFoEf.js} +1 -1
  66. package/src/assets/web-panel/assets/{RssFeed-njlwKUGK.js → RssFeed-BsvKrXMS.js} +2 -2
  67. package/src/assets/web-panel/assets/{Search-DLdEmgBw.js → Search-DFUStfgQ.js} +1 -1
  68. package/src/assets/web-panel/assets/{Security-SXGPSHdu.js → Security-ILg1zxdK.js} +4 -4
  69. package/src/assets/web-panel/assets/{Services-CuFGnNsb.js → Services-Dd41PCaY.js} +2 -2
  70. package/src/assets/web-panel/assets/{Skeleton-CtUC0mDa.js → Skeleton-Bzo1cN80.js} +1 -1
  71. package/src/assets/web-panel/assets/{Skills-P1qgOVFn.js → Skills-BDHh17P0.js} +1 -1
  72. package/src/assets/web-panel/assets/{Sla-CsppE8YV.js → Sla-jl7UTiRY.js} +1 -1
  73. package/src/assets/web-panel/assets/{SpeechSettings-Cq1oG56m.js → SpeechSettings-BePa-RF6.js} +1 -1
  74. package/src/assets/web-panel/assets/{SyncSettings-DdKW6V-C.js → SyncSettings-DiqqDKGZ.js} +2 -2
  75. package/src/assets/web-panel/assets/{Tasks-BCc9san5.js → Tasks-DYQ_6lxj.js} +1 -1
  76. package/src/assets/web-panel/assets/{Templates-CcHC1dMA.js → Templates-JiDeI06L.js} +1 -1
  77. package/src/assets/web-panel/assets/{Tenant-CA4PqU22.js → Tenant-hhgI6zwS.js} +1 -1
  78. package/src/assets/web-panel/assets/Terminal-CjTZPa37.js +3 -0
  79. package/src/assets/web-panel/assets/{TimelineRenderer-DHWTSvOy.js → TimelineRenderer-B8uB5Llk.js} +1 -1
  80. package/src/assets/web-panel/assets/{Tokens-Ddz-P_yh.js → Tokens-C3b_6r2z.js} +1 -1
  81. package/src/assets/web-panel/assets/{Trigger-ePmrmLZ1.js → Trigger-tIP7HKVe.js} +1 -1
  82. package/src/assets/web-panel/assets/{Trust-DmuK1CCE.js → Trust-vjoc11vJ.js} +1 -1
  83. package/src/assets/web-panel/assets/{UkeySign-CqqBuRrT.js → UkeySign-DUPBnGuH.js} +1 -1
  84. package/src/assets/web-panel/assets/{VideoEditing-BGlR3uWM.js → VideoEditing-CBvhUY5T.js} +1 -1
  85. package/src/assets/web-panel/assets/{Wallet-Ba_Qx6Ga.js → Wallet-DUaQ0uA5.js} +4 -4
  86. package/src/assets/web-panel/assets/{WebAuthn-29neXKt2.js → WebAuthn-DllSivjE.js} +5 -5
  87. package/src/assets/web-panel/assets/{WorkflowEditor-lD0lR0UQ.js → WorkflowEditor-xc8D3uO6.js} +1 -1
  88. package/src/assets/web-panel/assets/{chat-B3stH01u.js → chat-BVicU7oA.js} +1 -1
  89. package/src/assets/web-panel/assets/{colors-Czly56MN.js → colors-DJzLmhLm.js} +1 -1
  90. package/src/assets/web-panel/assets/{compact-item-C0TkbkAJ.js → compact-item-BvYRfThE.js} +1 -1
  91. package/src/assets/web-panel/assets/{createContext-BJmpSlf1.js → createContext-DGXxCBKR.js} +1 -1
  92. package/src/assets/web-panel/assets/devWarning-BT46Y_QI.js +1 -0
  93. package/src/assets/web-panel/assets/{hasIn-D1q-zw7u.js → hasIn-SBDJB1y4.js} +1 -1
  94. package/src/assets/web-panel/assets/{index-DV-twjNO.js → index-1SdDS6lR.js} +1 -1
  95. package/src/assets/web-panel/assets/{index-B-kTvMq7.js → index-9gdI7uUW.js} +1 -1
  96. package/src/assets/web-panel/assets/index-B7nuIywP.js +1 -0
  97. package/src/assets/web-panel/assets/{index-Bm_-RKal.js → index-BJZf9DhV.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-CQftlZn-.js → index-BO1itZaY.js} +3 -3
  99. package/src/assets/web-panel/assets/{index-Dw3L_smW.js → index-BTrBGBJs.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-C7sFKQ53.js → index-BYqz4Wrr.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-DlvsSuBC.js → index-Bf-ctERC.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-ChESIe5r.js → index-CKyEivf8.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-DaqEHaCg.js → index-CdGY9P8a.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-DZeoKL6t.js → index-Cf-O_g_8.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-XWV8JWMc.js → index-CloCgBUR.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-CpMIdPJ0.js → index-CoJAO1Lm.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-CgS8XUBU.js → index-Crk5NTb0.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-DmUta2lw.js → index-Cs2rmLFt.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-Dpz_7sf-.js → index-CtwqO5qo.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-DRcQsPez.js → index-D7HimK0M.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-BEt2-3x5.js → index-DCdRAgjy.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-CHvPlzWJ.js → index-DCqRS6da.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-BDHXx65P.js → index-DHVLJ8q0.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-K4YaPDOn.js → index-DKrvvWm4.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-C1pOqU7D.js → index-DMarmfrv.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-DAhrn9EJ.js → index-DRfiXB_p.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-cPjWjvmW.js → index-Dm_77jgR.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-C27TnOoT.js → index-DnjPdvR6.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-upY9rkGZ.js → index-DonCnfMr.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-CbvNJUwu.js → index-DvUTDYXX.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-BVwJ3jht.js → index-FxZzRyE1.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-DIF6XHIi.js → index-MjC4G09d.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-B8KqsomG.js → index-VMfwIH5G.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-8GKykbS4.js → index-YJkzy8ZF.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-DpGs96FC.js → index-d5BVd-cL.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-DO8xOwxi.js → index-e4fXH_WO.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-Cu_4HaUS.js → index-hxTODbM1.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-Cf7Gr3NG.js → index-lpaGoTH3.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-DBqAm8es.js → index-wcCL-miV.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-ZDUhX41Z.js → index-xfluRkCT.js} +1 -1
  131. package/src/assets/web-panel/assets/index-ycwAfC-i.js +1 -0
  132. package/src/assets/web-panel/assets/{index-z8ATo2aQ.js → index-z1ZylsLq.js} +1 -1
  133. package/src/assets/web-panel/assets/{initDefaultProps-QWEXi6-t.js → initDefaultProps-C1zO1KnY.js} +1 -1
  134. package/src/assets/web-panel/assets/{motion-BfrQwvV1.js → motion-CWLtEGmC.js} +1 -1
  135. package/src/assets/web-panel/assets/{move-Dn7x0H9t.js → move-DzD_C3Vm.js} +1 -1
  136. package/src/assets/web-panel/assets/{mtc-parser-F61D_TgE.js → mtc-parser-D880PYJl.js} +1 -1
  137. package/src/assets/web-panel/assets/{omit-4SQZ39PF.js → omit-CFR_z2ov.js} +1 -1
  138. package/src/assets/web-panel/assets/{pickAttrs-C7DTe126.js → pickAttrs-srIhgrSC.js} +1 -1
  139. package/src/assets/web-panel/assets/{placementArrow-40NeyzDK.js → placementArrow-C1rXpibP.js} +1 -1
  140. package/src/assets/web-panel/assets/{responsiveObserve-BiUJ6qWs.js → responsiveObserve-C30gRcSS.js} +1 -1
  141. package/src/assets/web-panel/assets/{slide-CacJTM3f.js → slide-CvtKiMfV.js} +1 -1
  142. package/src/assets/web-panel/assets/{statusUtils-K812HB-k.js → statusUtils-DNHO7ITG.js} +1 -1
  143. package/src/assets/web-panel/assets/{styleChecker-CKeHA2eM.js → styleChecker-Dt_Sl-g4.js} +1 -1
  144. package/src/assets/web-panel/assets/{useFlexGapSupport-CKl4FqXF.js → useFlexGapSupport-Cjev42Gh.js} +1 -1
  145. package/src/assets/web-panel/assets/{useFs-DPoiJjSZ.js → useFs-Baxglj2V.js} +1 -1
  146. package/src/assets/web-panel/assets/{usePersonalDataHub-aHwBspmt.js → usePersonalDataHub-B4NkcLaP.js} +1 -1
  147. package/src/assets/web-panel/assets/{vnode-DrA-GuCT.js → vnode-mIRkdT7o.js} +1 -1
  148. package/src/assets/web-panel/assets/{zoom-G3LMswgy.js → zoom-HzI5DlH_.js} +1 -1
  149. package/src/assets/web-panel/index.html +1 -1
  150. package/src/auth/npm-auth.js +30 -5
  151. package/src/commands/agenda.js +64 -2
  152. package/src/commands/agent.js +45 -3
  153. package/src/commands/background-session.js +103 -0
  154. package/src/commands/config.js +70 -5
  155. package/src/commands/context.js +36 -2
  156. package/src/commands/hub.js +19 -1
  157. package/src/commands/memory.js +21 -6
  158. package/src/commands/permissions.js +57 -1
  159. package/src/commands/plugin.js +2 -0
  160. package/src/commands/review.js +23 -11
  161. package/src/commands/routine.js +31 -8
  162. package/src/commands/session.js +11 -3
  163. package/src/commands/team.js +20 -7
  164. package/src/commands/update.js +65 -10
  165. package/src/esm-bridge.js +3 -0
  166. package/src/gateways/terminal/PtyManager.js +8 -1
  167. package/src/gateways/ws/message-dispatcher.js +3 -0
  168. package/src/gateways/ws/session-protocol.js +26 -0
  169. package/src/gateways/ws/ws-agent-handler.js +107 -69
  170. package/src/gateways/ws/ws-server.js +92 -4
  171. package/src/harness/jsonl-session-store.js +13 -6
  172. package/src/harness/mcp-client.js +200 -1
  173. package/src/index.js +123 -55
  174. package/src/lazy-dispatch.js +86 -85
  175. package/src/lib/__tests__/personal-data-hub-aichat-wizard.test.js +15 -0
  176. package/src/lib/agent-coordinator.js +4 -0
  177. package/src/lib/agent-ipc-bus.js +32 -2
  178. package/src/lib/agent-sandbox.js +16 -2
  179. package/src/lib/agent-schedule-store.js +55 -0
  180. package/src/lib/agent-tool-admission.js +104 -0
  181. package/src/lib/api-key-helper.js +10 -2
  182. package/src/lib/async-hook-supervisor.cjs +26 -4
  183. package/src/lib/background-interaction-resolver.js +71 -0
  184. package/src/lib/background-session-transport.js +59 -1
  185. package/src/lib/changelog.js +19 -11
  186. package/src/lib/channels/channel-manager.js +6 -0
  187. package/src/lib/channels/telegram-channel.js +11 -1
  188. package/src/lib/channels/webhook-channel.js +15 -3
  189. package/src/lib/checkpoint-store.js +10 -2
  190. package/src/lib/cloud/bundle.js +12 -2
  191. package/src/lib/code-review.js +32 -8
  192. package/src/lib/computer-use/control-backend.js +18 -3
  193. package/src/lib/context-breakdown.js +46 -0
  194. package/src/lib/context-source-ledger.js +43 -0
  195. package/src/lib/crash-reporter.js +6 -0
  196. package/src/lib/diff-review-follow-up.js +154 -0
  197. package/src/lib/downloader.js +17 -3
  198. package/src/lib/ensure-utf8.js +11 -3
  199. package/src/lib/event-runtime-producer.js +58 -0
  200. package/src/lib/event-runtime-store.js +354 -0
  201. package/src/lib/event-runtime-worker.js +109 -0
  202. package/src/lib/execution-backend.js +72 -21
  203. package/src/lib/git-integration.js +19 -4
  204. package/src/lib/hook-manager.js +34 -15
  205. package/src/lib/hook-runner.cjs +48 -3
  206. package/src/lib/hooks-v2-producers.js +15 -0
  207. package/src/lib/hooks-v2-runtime.js +70 -21
  208. package/src/lib/host-adb-bridge.js +111 -21
  209. package/src/lib/ide-context.js +128 -1
  210. package/src/lib/interaction-adapter.js +39 -0
  211. package/src/lib/ipc-attach-protocol.js +98 -0
  212. package/src/lib/json-schema-validate.js +190 -36
  213. package/src/lib/lan-pairing-preflight.js +13 -2
  214. package/src/lib/lsp/__tests__/lsp-server-registry.test.js +18 -0
  215. package/src/lib/lsp/lsp-client.js +18 -1
  216. package/src/lib/lsp/lsp-manager.js +4 -0
  217. package/src/lib/lsp/lsp-server-registry.js +11 -0
  218. package/src/lib/mcp-oauth.js +8 -2
  219. package/src/lib/npm-invocation.js +29 -0
  220. package/src/lib/packer/pkg-runner.js +13 -2
  221. package/src/lib/packer/precheck.js +33 -16
  222. package/src/lib/packer/web-panel-builder.js +16 -2
  223. package/src/lib/permission-rules.cjs +5 -1
  224. package/src/lib/personal-data-hub-aichat-wizard.js +22 -6
  225. package/src/lib/personal-data-hub-wiring.js +27 -3
  226. package/src/lib/plan-mode.js +204 -11
  227. package/src/lib/plugin-monitor-supervisor.js +39 -4
  228. package/src/lib/plugin-runtime/bin.js +45 -0
  229. package/src/lib/plugin-runtime/hooks.js +14 -1
  230. package/src/lib/plugin-runtime/install.js +2 -1
  231. package/src/lib/plugin-runtime/lsp.js +3 -0
  232. package/src/lib/plugin-runtime/mcp.js +8 -1
  233. package/src/lib/plugin-runtime/monitors.js +4 -0
  234. package/src/lib/plugin-runtime/plugin-options.js +74 -7
  235. package/src/lib/plugin-runtime/signature.js +45 -0
  236. package/src/lib/pr-create.js +21 -8
  237. package/src/lib/pr-link-ledger.js +15 -3
  238. package/src/lib/process-execution-broker/credential-agent.js +295 -0
  239. package/src/lib/process-execution-broker/index.js +440 -14
  240. package/src/lib/process-execution-broker/patch-child-process.js +2 -3
  241. package/src/lib/process-execution-broker/platform-sandbox.js +351 -0
  242. package/src/lib/process-manager.js +18 -3
  243. package/src/lib/provenance-api.js +6 -0
  244. package/src/lib/proxy-bootstrap.js +19 -0
  245. package/src/lib/publish-workspace.js +14 -6
  246. package/src/lib/repl-rewind.js +9 -4
  247. package/src/lib/secret-store.js +159 -0
  248. package/src/lib/service-manager.js +64 -29
  249. package/src/lib/session-hooks.js +328 -473
  250. package/src/lib/session-telemetry-middleware.js +6 -0
  251. package/src/lib/settings-hook-events.cjs +61 -1
  252. package/src/lib/settings-hooks.cjs +4 -0
  253. package/src/lib/side-effect-ledger.js +22 -0
  254. package/src/lib/sub-agent-context.js +5 -0
  255. package/src/lib/sub-agent-profiles.js +4 -0
  256. package/src/lib/trace-api.js +6 -0
  257. package/src/lib/turn-context.js +14 -8
  258. package/src/lib/unattended-action-policy.js +83 -0
  259. package/src/lib/update-notice.js +9 -45
  260. package/src/lib/with-file-lock.js +7 -0
  261. package/src/lib/ws-server.js +1 -0
  262. package/src/repl/agent-repl.js +71 -13
  263. package/src/repl/clipboard-copy.js +8 -2
  264. package/src/repl/pr-comments.js +30 -7
  265. package/src/runtime/agent-core.js +439 -87
  266. package/src/runtime/agent-runtime.js +1 -0
  267. package/src/runtime/coding-agent-contract-shared.cjs +52 -0
  268. package/src/runtime/coding-agent-policy.cjs +20 -0
  269. package/src/runtime/diagnostics.js +73 -8
  270. package/src/runtime/headless-runner.js +63 -0
  271. package/src/runtime/headless-stream.js +269 -17
  272. package/src/runtime/mcp-config.js +16 -1
  273. package/src/workers/background-agent-worker.js +80 -1
  274. package/src/assets/web-panel/assets/AppLayout-7iSKDmlI.js +0 -9
  275. package/src/assets/web-panel/assets/ChatBubbleRenderer-DcbUHeGW.js +0 -1
  276. package/src/assets/web-panel/assets/Dashboard-BAKYNavw.js +0 -3
  277. package/src/assets/web-panel/assets/MobileProjects-C4GKn1dH.js +0 -1
  278. package/src/assets/web-panel/assets/Terminal-Fj7ea0In.js +0 -3
  279. package/src/assets/web-panel/assets/devWarning-CDI8Sbaj.js +0 -1
  280. package/src/assets/web-panel/assets/index-96LBR96V.js +0 -1
  281. package/src/assets/web-panel/assets/index-DyQkiW24.js +0 -1
@@ -318,6 +318,7 @@ export class AgentRuntime {
318
318
  maxConnections,
319
319
  timeout,
320
320
  sessionManager,
321
+ projectRoot: project,
321
322
  remoteSessionRelayUrl,
322
323
  remoteSessionPeerId,
323
324
  envelopeBus,
@@ -90,6 +90,58 @@ const CODING_AGENT_TOOL_CONTRACTS = Object.freeze([
90
90
  tags: ["tool:write_file", "contract:coding-agent", "tier:mvp"],
91
91
  },
92
92
  },
93
+ {
94
+ name: "delete_file",
95
+ title: "Delete File",
96
+ kind: "filesystem",
97
+ tier: "mvp",
98
+ description:
99
+ "Delete one file. Directories are rejected. Read the file first; interactive IDE approval shows an explicit deletion diff before applying it.",
100
+ inputSchema: {
101
+ type: "object",
102
+ properties: {
103
+ path: { type: "string", description: "File path to delete" },
104
+ },
105
+ required: ["path"],
106
+ },
107
+ ...TOOL_POLICY_METADATA.delete_file,
108
+ permissions: {
109
+ level: "elevated",
110
+ scopes: ["filesystem:write"],
111
+ },
112
+ telemetry: {
113
+ category: "filesystem",
114
+ tags: ["tool:delete_file", "contract:coding-agent", "tier:mvp"],
115
+ },
116
+ },
117
+ {
118
+ name: "move_file",
119
+ title: "Move File",
120
+ kind: "filesystem",
121
+ tier: "mvp",
122
+ description:
123
+ "Rename or move one file without overwriting an existing destination. Directories are rejected. Interactive IDE approval shows the explicit source and destination.",
124
+ inputSchema: {
125
+ type: "object",
126
+ properties: {
127
+ path: { type: "string", description: "Existing source file path" },
128
+ target_path: {
129
+ type: "string",
130
+ description: "New destination file path",
131
+ },
132
+ },
133
+ required: ["path", "target_path"],
134
+ },
135
+ ...TOOL_POLICY_METADATA.move_file,
136
+ permissions: {
137
+ level: "elevated",
138
+ scopes: ["filesystem:write"],
139
+ },
140
+ telemetry: {
141
+ category: "filesystem",
142
+ tags: ["tool:move_file", "contract:coding-agent", "tier:mvp"],
143
+ },
144
+ },
93
145
  {
94
146
  name: "notebook_edit",
95
147
  title: "Edit Notebook",
@@ -112,6 +112,26 @@ const TOOL_POLICY_METADATA = Object.freeze({
112
112
  approvalFlow: "plan",
113
113
  isReadOnly: false,
114
114
  },
115
+ delete_file: {
116
+ riskLevel: RISK_LEVELS.MEDIUM,
117
+ category: TOOL_CATEGORIES.WRITE,
118
+ availableInPlanMode: false,
119
+ planModeBehavior: "blocked",
120
+ requiresPlanApproval: true,
121
+ requiresConfirmation: false,
122
+ approvalFlow: "plan",
123
+ isReadOnly: false,
124
+ },
125
+ move_file: {
126
+ riskLevel: RISK_LEVELS.MEDIUM,
127
+ category: TOOL_CATEGORIES.WRITE,
128
+ availableInPlanMode: false,
129
+ planModeBehavior: "blocked",
130
+ requiresPlanApproval: true,
131
+ requiresConfirmation: false,
132
+ approvalFlow: "plan",
133
+ isReadOnly: false,
134
+ },
115
135
  notebook_edit: {
116
136
  riskLevel: RISK_LEVELS.MEDIUM,
117
137
  category: TOOL_CATEGORIES.WRITE,
@@ -12,7 +12,6 @@
12
12
  * Refs: docs/implementation-plans/CLI_RUNTIME_CONVERGENCE_ADR.md
13
13
  */
14
14
 
15
- import { execSync } from "node:child_process";
16
15
  import { existsSync, readdirSync, readFileSync } from "node:fs";
17
16
  import { join as pathJoin } from "node:path";
18
17
  import { createRequire } from "node:module";
@@ -30,6 +29,9 @@ import {
30
29
  import { loadConfig } from "../lib/config-manager.js";
31
30
  import { isAppRunning, getAppPid } from "../lib/process-manager.js";
32
31
  import { readDiskVersion, versionDiagnosis } from "../lib/version-skew.js";
32
+ import { EventRuntimeStore } from "../lib/event-runtime-store.js";
33
+ import { executionBroker } from "../lib/process-execution-broker/index.js";
34
+ import { resolveNpmInvocation } from "../lib/npm-invocation.js";
33
35
 
34
36
  /** Best-effort read of the npm `latest` cached by the startup update notice. */
35
37
  function readCachedLatest() {
@@ -67,9 +69,31 @@ function readdirSafe(dir) {
67
69
  }
68
70
  }
69
71
 
70
- function safeExec(cmd) {
72
+ export function diagnosticProcessInvocations(
73
+ platform = process.platform,
74
+ execPath = process.execPath,
75
+ ) {
76
+ return {
77
+ npm: resolveNpmInvocation({ platform, execPath }),
78
+ git: { command: "git", prefixArgs: [] },
79
+ };
80
+ }
81
+
82
+ export const _diagnosticDeps = {
83
+ execFileSync: (...args) => executionBroker.execFileSync(...args),
84
+ };
85
+
86
+ export function runDiagnosticProbe(file, args = [], deps = _diagnosticDeps) {
71
87
  try {
72
- return execSync(cmd, { encoding: "utf-8" }).trim();
88
+ return String(
89
+ deps.execFileSync(file, args, {
90
+ encoding: "utf-8",
91
+ origin: "runtime:diagnostics",
92
+ policy: "allow",
93
+ scope: "diagnostics",
94
+ shell: false,
95
+ }),
96
+ ).trim();
73
97
  } catch {
74
98
  return null;
75
99
  }
@@ -126,6 +150,7 @@ export function checkPdhPackageIntegrity(deps = {}) {
126
150
  */
127
151
  export async function collectDoctorReport() {
128
152
  const checks = [];
153
+ const invocations = diagnosticProcessInvocations();
129
154
 
130
155
  // Node.js
131
156
  const nodeVersion = process.versions.node;
@@ -139,7 +164,10 @@ export async function collectDoctorReport() {
139
164
  });
140
165
 
141
166
  // npm
142
- const npmVersion = safeExec("npm --version");
167
+ const npmVersion = runDiagnosticProbe(invocations.npm.command, [
168
+ ...invocations.npm.prefixArgs,
169
+ "--version",
170
+ ]);
143
171
  checks.push({
144
172
  id: "npm",
145
173
  name: npmVersion ? `npm ${npmVersion}` : "npm",
@@ -168,7 +196,7 @@ export async function collectDoctorReport() {
168
196
  });
169
197
 
170
198
  // Git
171
- const gitVersion = safeExec("git --version");
199
+ const gitVersion = runDiagnosticProbe(invocations.git.command, ["--version"]);
172
200
  checks.push({
173
201
  id: "git",
174
202
  name: gitVersion || "Git",
@@ -316,7 +344,13 @@ export function parseGitWorktrees(porcelain) {
316
344
 
317
345
  /** Best-effort live git worktree list for the current repo. */
318
346
  export function collectWorktrees() {
319
- return parseGitWorktrees(safeExec("git worktree list --porcelain"));
347
+ return parseGitWorktrees(
348
+ runDiagnosticProbe(diagnosticProcessInvocations().git.command, [
349
+ "worktree",
350
+ "list",
351
+ "--porcelain",
352
+ ]),
353
+ );
320
354
  }
321
355
 
322
356
  /**
@@ -364,10 +398,37 @@ export function buildDoctorDiagnosticInput(report, signals = {}) {
364
398
  * services: Array<{ name, state }> | null,
365
399
  * note: string | null
366
400
  * },
367
- * ports: Array<{ name, port, open }>
401
+ * ports: Array<{ name, port, open }>,
402
+ * eventRuntime: { enabled, health, error }
368
403
  * }
369
404
  */
370
- export async function collectStatusReport() {
405
+ export function collectEventRuntimeStatus({
406
+ env = process.env,
407
+ store = null,
408
+ } = {}) {
409
+ const enabled = env?.CC_EVENT_RUNTIME_DURABLE === "1";
410
+ if (!enabled && !store) {
411
+ return { enabled: false, health: null, error: null };
412
+ }
413
+ try {
414
+ return {
415
+ enabled,
416
+ health: (store || new EventRuntimeStore()).getHealthSnapshot(),
417
+ error: null,
418
+ };
419
+ } catch (error) {
420
+ return {
421
+ enabled,
422
+ health: null,
423
+ error: {
424
+ code: error?.code || "CC_EVENT_RUNTIME_STATUS_FAILED",
425
+ message: String(error?.message || error),
426
+ },
427
+ };
428
+ }
429
+ }
430
+
431
+ export async function collectStatusReport(options = {}) {
371
432
  let config = {};
372
433
  try {
373
434
  config = loadConfig();
@@ -443,5 +504,9 @@ export async function collectStatusReport() {
443
504
  setup,
444
505
  docker,
445
506
  ports,
507
+ eventRuntime: collectEventRuntimeStatus({
508
+ env: options.eventRuntimeEnv || process.env,
509
+ store: options.eventRuntimeStore || null,
510
+ }),
446
511
  };
447
512
  }
@@ -56,6 +56,7 @@ import {
56
56
  reconcileSideEffects,
57
57
  classifyToolSideEffect,
58
58
  } from "../lib/side-effect-ledger.js";
59
+ import { DiffReviewFollowUpTracker } from "../lib/diff-review-follow-up.js";
59
60
  import { SIDE_EFFECT_LEDGER_EVENT } from "../lib/side-effect-ledger-store.js";
60
61
  import { TurnBindingLog, createTurnBindingFeed } from "../lib/turn-binding.js";
61
62
  import { TURN_BINDING_EVENT } from "../lib/turn-binding-store.js";
@@ -80,6 +81,7 @@ import { isolationLevel } from "../lib/agent-sandbox.js";
80
81
  import { createBackgroundPhaseReporter } from "../lib/background-phase-reporter.js";
81
82
  import { withQuietStdout } from "./quiet-stdout.js";
82
83
  import { CostBudget } from "../lib/cost-budget.js";
84
+ import { estimateTokens } from "../harness/prompt-compressor.js";
83
85
  import {
84
86
  classifyDenial,
85
87
  recordDenial,
@@ -859,6 +861,7 @@ export async function runAgentHeadless(options = {}, deps = {}) {
859
861
  }
860
862
  }
861
863
  }
864
+ const diffReviewFollowUps = new DiffReviewFollowUpTracker(sideEffectLedger);
862
865
 
863
866
  // ── Wire the persistent ApprovalGate with our non-interactive confirmer
864
867
  // and force the session-policy tier dictated by --permission-mode. ──────
@@ -947,6 +950,7 @@ export async function runAgentHeadless(options = {}, deps = {}) {
947
950
  // (undefined) leaves both paths byte-identical.
948
951
  const _leanNoProjectMemory = options.projectMemory === false;
949
952
  let _loadedInstructions = null;
953
+ let _loadedPersonaSkills = [];
950
954
  const systemContent = composeSystemPrompt(
951
955
  buildSystemPrompt(cwd, {
952
956
  additionalDirectories,
@@ -961,6 +965,9 @@ export async function runAgentHeadless(options = {}, deps = {}) {
961
965
  onInstructionsLoaded: (loaded) => {
962
966
  _loadedInstructions = loaded;
963
967
  },
968
+ onSkillsLoaded: (skills) => {
969
+ _loadedPersonaSkills = Array.isArray(skills) ? skills : [];
970
+ },
964
971
  },
965
972
  );
966
973
 
@@ -1340,6 +1347,34 @@ export async function runAgentHeadless(options = {}, deps = {}) {
1340
1347
  });
1341
1348
  }
1342
1349
 
1350
+ // Persist the admitted runtime schema surface so `cc context --sources` can
1351
+ // attribute MCP cost to the actual server/tool definitions used by this run,
1352
+ // rather than guessing from the current environment on a later invocation.
1353
+ if (
1354
+ persist &&
1355
+ (mcp?.extraToolDefinitions?.length || _loadedPersonaSkills.length)
1356
+ ) {
1357
+ try {
1358
+ store.appendEvent(sessionId, "context_sources", {
1359
+ mcp: (mcp?.extraToolDefinitions || []).map((definition) => ({
1360
+ function: {
1361
+ name: definition?.function?.name || null,
1362
+ description: definition?.function?.description || "",
1363
+ parameters: definition?.function?.parameters || {},
1364
+ },
1365
+ })),
1366
+ skills: _loadedPersonaSkills.map((skill) => ({
1367
+ id: skill?.id || skill?.displayName || "skill",
1368
+ displayName: skill?.displayName || skill?.id || "skill",
1369
+ source: skill?.source || "skill",
1370
+ body: typeof skill?.body === "string" ? skill.body : "",
1371
+ })),
1372
+ });
1373
+ } catch {
1374
+ // Source attribution is observability-only; never fail the agent run.
1375
+ }
1376
+ }
1377
+
1343
1378
  const loopOptions = {
1344
1379
  model,
1345
1380
  provider,
@@ -1382,6 +1417,7 @@ export async function runAgentHeadless(options = {}, deps = {}) {
1382
1417
  enabledToolNames,
1383
1418
  disabledTools,
1384
1419
  iterationBudget: budget,
1420
+ toolAdmission: options.toolAdmission || null,
1385
1421
  // `ask_user_question` in a BACKGROUND turn child (P0 state-machine
1386
1422
  // producer for `needs_input`): there is no live channel to a human
1387
1423
  // mid-turn, but the question IS the structured needs-input signal. Park
@@ -1811,6 +1847,13 @@ export async function runAgentHeadless(options = {}, deps = {}) {
1811
1847
  // P0-2: settle the in-flight side-effect (commit on success, fail on
1812
1848
  // a clean error) and persist the updated ledger snapshot.
1813
1849
  if (persist && currentSideEffectOpId) {
1850
+ if (event.result?._diffReviewAudit) {
1851
+ diffReviewFollowUps.observe(
1852
+ sideEffectLedger,
1853
+ currentSideEffectOpId,
1854
+ event.result._diffReviewAudit,
1855
+ );
1856
+ }
1814
1857
  if (err)
1815
1858
  sideEffectLedger.fail(
1816
1859
  currentSideEffectOpId,
@@ -1917,10 +1960,30 @@ export async function runAgentHeadless(options = {}, deps = {}) {
1917
1960
  }
1918
1961
  case "response-complete": {
1919
1962
  finalText = event.content || "";
1963
+ if (
1964
+ persist &&
1965
+ diffReviewFollowUps.complete(sideEffectLedger, {
1966
+ status: "completed-without-reproposal",
1967
+ }).length > 0
1968
+ ) {
1969
+ persistSideEffectLedger();
1970
+ }
1920
1971
  break;
1921
1972
  }
1922
1973
  case "run-ended": {
1923
1974
  if (event.reason) endReason = event.reason;
1975
+ if (
1976
+ persist &&
1977
+ diffReviewFollowUps.complete(sideEffectLedger, {
1978
+ status:
1979
+ event.reason === "complete"
1980
+ ? "completed-without-reproposal"
1981
+ : "interrupted",
1982
+ reason: event.reason || endReason,
1983
+ }).length > 0
1984
+ ) {
1985
+ persistSideEffectLedger();
1986
+ }
1924
1987
  break;
1925
1988
  }
1926
1989
  default: