chainlesschain 0.162.180 → 0.162.182

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 (263) hide show
  1. package/package.json +7 -3
  2. package/scripts/build-windows-sandbox-helper.ps1 +163 -0
  3. package/src/assets/web-panel/.build-hash +1 -1
  4. package/src/assets/web-panel/assets/{AIOps-D_TIL54O.js → AIOps-DzZ5_xoj.js} +1 -1
  5. package/src/assets/web-panel/assets/{ActionButton-eQwy9r-f.js → ActionButton-DeLXddIg.js} +1 -1
  6. package/src/assets/web-panel/assets/{Analytics-D2eNuDgT.js → Analytics-rvDCmet1.js} +3 -3
  7. package/src/assets/web-panel/assets/{AppLayout-CFhwOFsf.js → AppLayout-Yt6QVDnp.js} +5 -5
  8. package/src/assets/web-panel/assets/{Artifacts-CJUMw6PB.js → Artifacts-BS112K5L.js} +1 -1
  9. package/src/assets/web-panel/assets/{Audit-CDB9V58o.js → Audit-0wJuQrNu.js} +1 -1
  10. package/src/assets/web-panel/assets/{BackgroundAgents-TBppYFjN.js → BackgroundAgents-B90PMgbn.js} +1 -1
  11. package/src/assets/web-panel/assets/{Backup-CYEOUpzJ.js → Backup-TkgMglQQ.js} +1 -1
  12. package/src/assets/web-panel/assets/{BaseInput-C88fFT2u.js → BaseInput-CQVS9p1l.js} +1 -1
  13. package/src/assets/web-panel/assets/{Chat-mkr1vC3N.js → Chat-YTjQHoC7.js} +6 -6
  14. package/src/assets/web-panel/assets/ChatBubbleRenderer-PR074hUN.js +1 -0
  15. package/src/assets/web-panel/assets/{Checkbox-CVU4xqti.js → Checkbox-5bwaOabq.js} +1 -1
  16. package/src/assets/web-panel/assets/{Codegen-rrNcByz3.js → Codegen-BFmNQ_Xe.js} +1 -1
  17. package/src/assets/web-panel/assets/{Col-Cqu-zCvh.js → Col-BT_u4Dzp.js} +1 -1
  18. package/src/assets/web-panel/assets/{Community-RGRlSgXV.js → Community-CJP52u5b.js} +1 -1
  19. package/src/assets/web-panel/assets/{Compact-DBm6epOK.js → Compact-BpzhJE9i.js} +1 -1
  20. package/src/assets/web-panel/assets/{Compliance-BgKw5iaW.js → Compliance-Cg7rfslp.js} +1 -1
  21. package/src/assets/web-panel/assets/{Cowork-BqQcNO3Z.js → Cowork-JisxL6Yy.js} +3 -3
  22. package/src/assets/web-panel/assets/{Cron-DO5gTFNb.js → Cron-Bu7Ug_MC.js} +2 -2
  23. package/src/assets/web-panel/assets/{Crosschain-B8hbJNuN.js → Crosschain-CvuqoLdj.js} +1 -1
  24. package/src/assets/web-panel/assets/{DID-B08bFJ2C.js → DID-C2u9G8Pu.js} +2 -2
  25. package/src/assets/web-panel/assets/{Dashboard-xNdy_ifo.js → Dashboard-BFt5Yv3d.js} +2 -2
  26. package/src/assets/web-panel/assets/{Dropdown-D-KIZgWL.js → Dropdown-DIaT9Wxq.js} +1 -1
  27. package/src/assets/web-panel/assets/{EmailListRenderer-DKCvsaGo.js → EmailListRenderer-D_A601Y4.js} +1 -1
  28. package/src/assets/web-panel/assets/{FamilyGuardDashboard-D_cfqama.js → FamilyGuardDashboard--IyQ8I8w.js} +1 -1
  29. package/src/assets/web-panel/assets/{Federation-B-UqQD68.js → Federation-BihWHxuY.js} +1 -1
  30. package/src/assets/web-panel/assets/{FormItemContext-BWWvWuJW.js → FormItemContext-BB8dOXc_.js} +1 -1
  31. package/src/assets/web-panel/assets/{GenericCardRenderer-CPchx6N7.js → GenericCardRenderer-DQYhj1HH.js} +1 -1
  32. package/src/assets/web-panel/assets/{Git-Vx4co9Ff.js → Git-B-2QZxGf.js} +2 -2
  33. package/src/assets/web-panel/assets/{Governance-D4x0pp_m.js → Governance-CusSb-nG.js} +1 -1
  34. package/src/assets/web-panel/assets/{Inference-T3KvwPYR.js → Inference-BAjmvPPL.js} +1 -1
  35. package/src/assets/web-panel/assets/{KnowledgeGraph-Ddv3KUv3.js → KnowledgeGraph-DoNYWKYq.js} +1 -1
  36. package/src/assets/web-panel/assets/{Logs-DfH-Dkae.js → Logs-B8fKWD-n.js} +2 -2
  37. package/src/assets/web-panel/assets/{MarkdownRenderer-DHW3PbCq.js → MarkdownRenderer-BlJm1J7E.js} +1 -1
  38. package/src/assets/web-panel/assets/{Marketplace-tjgb0R3D.js → Marketplace-CyOscbSL.js} +1 -1
  39. package/src/assets/web-panel/assets/{McpTools-DHAk5nYX.js → McpTools-Ex6Om5da.js} +5 -5
  40. package/src/assets/web-panel/assets/{Memory-A2Yx7thM.js → Memory-CDcD8l8r.js} +2 -2
  41. package/src/assets/web-panel/assets/{MobileBridge-BEmTVfN5.js → MobileBridge-xfBqoFDg.js} +1 -1
  42. package/src/assets/web-panel/assets/{MobileProjects-DuFHUgE4.js → MobileProjects-BwObMMA2.js} +1 -1
  43. package/src/assets/web-panel/assets/{Mtc-BDSll0OZ.js → Mtc-CIWd36OV.js} +4 -4
  44. package/src/assets/web-panel/assets/{MtcAudit-CuBvluaS.js → MtcAudit-CPX0ouuA.js} +4 -4
  45. package/src/assets/web-panel/assets/{Multisig-BmXAA-Sb.js → Multisig-BDJsIUuW.js} +3 -3
  46. package/src/assets/web-panel/assets/{NLProgramming-ci2stZAe.js → NLProgramming-DEkbuD3N.js} +1 -1
  47. package/src/assets/web-panel/assets/{Notes-D-1RpqnS.js → Notes-DJpHRhH1.js} +3 -3
  48. package/src/assets/web-panel/assets/{NotificationSettings-C0GyitIT.js → NotificationSettings-C1UZ-Qd5.js} +1 -1
  49. package/src/assets/web-panel/assets/{OrderTableRenderer-U2bN-hj5.js → OrderTableRenderer-GlJtqLjT.js} +1 -1
  50. package/src/assets/web-panel/assets/{Organization-BNZgpPci.js → Organization-Bbhj0fac.js} +4 -4
  51. package/src/assets/web-panel/assets/{Overflow-CDidKmUN.js → Overflow-1H04x3kx.js} +1 -1
  52. package/src/assets/web-panel/assets/{P2P-BnreBaXq.js → P2P-CDpPe3et.js} +2 -2
  53. package/src/assets/web-panel/assets/{PdhVaultBrowser-DwJUxO9j.js → PdhVaultBrowser-MUX0Bpvw.js} +3 -3
  54. package/src/assets/web-panel/assets/{Permissions-BQGgJPH0.js → Permissions-A07-0Ci1.js} +4 -4
  55. package/src/assets/web-panel/assets/{PersonalDataHub-k_fSkCwL.js → PersonalDataHub-DhhDWxAZ.js} +5 -5
  56. package/src/assets/web-panel/assets/{Pipeline-WGqKMqau.js → Pipeline-CyfbJfe-.js} +1 -1
  57. package/src/assets/web-panel/assets/{Privacy-DtHj9Ymq.js → Privacy-CNFps3ED.js} +1 -1
  58. package/src/assets/web-panel/assets/{ProjectInit-B3wH2SFC.js → ProjectInit--T-u3Dr5.js} +2 -2
  59. package/src/assets/web-panel/assets/{ProjectSettings-Cd0cgcA1.js → ProjectSettings-DJmrK2fC.js} +2 -2
  60. package/src/assets/web-panel/assets/Projects-Qx_MdX9k.js +1 -0
  61. package/src/assets/web-panel/assets/{Providers-DTpxEXur.js → Providers-DLzzbOZd.js} +1 -1
  62. package/src/assets/web-panel/assets/{QrScannerModal-B2v6gR-C.js → QrScannerModal-CexOomKS.js} +1 -1
  63. package/src/assets/web-panel/assets/{QuickAsk-D3Nr9xXR.js → QuickAsk-QklGi19_.js} +1 -1
  64. package/src/assets/web-panel/assets/{Recommend-C9inoMky.js → Recommend-Bb9kwSw8.js} +1 -1
  65. package/src/assets/web-panel/assets/RemoteSession-DZuVNNN5.js +5 -0
  66. package/src/assets/web-panel/assets/{Reputation-41KFG646.js → Reputation-Dr5cLP0N.js} +1 -1
  67. package/src/assets/web-panel/assets/{Row-DqAaqqCv.js → Row-oCQHYv5t.js} +1 -1
  68. package/src/assets/web-panel/assets/{RssFeed-CMDpCDKc.js → RssFeed-IFDEykIR.js} +3 -3
  69. package/src/assets/web-panel/assets/{Search-B6mtegNL.js → Search-CspVIxDc.js} +1 -1
  70. package/src/assets/web-panel/assets/{Security-BaePFVZ8.js → Security-Bm66o_DH.js} +3 -3
  71. package/src/assets/web-panel/assets/{Services-DeG3Qscl.js → Services-DvanNqXl.js} +2 -2
  72. package/src/assets/web-panel/assets/{Skeleton-D_QP7F90.js → Skeleton-CHjEe9_O.js} +1 -1
  73. package/src/assets/web-panel/assets/{Skills-DLGyUgIA.js → Skills-Cb8jWjMX.js} +1 -1
  74. package/src/assets/web-panel/assets/{Sla-BN2pxW1Q.js → Sla-DxZm1491.js} +1 -1
  75. package/src/assets/web-panel/assets/{SpeechSettings-BWsZPd8B.js → SpeechSettings-DWxEEclC.js} +1 -1
  76. package/src/assets/web-panel/assets/{SyncSettings-VOZRPODW.js → SyncSettings-FIvOFw5p.js} +2 -2
  77. package/src/assets/web-panel/assets/Tasks-CyuLnDFR.js +1 -0
  78. package/src/assets/web-panel/assets/{Templates-eJSob-q0.js → Templates-CaNjzV_t.js} +1 -1
  79. package/src/assets/web-panel/assets/{Tenant-Bdwk8Rwy.js → Tenant-DjlP6TmH.js} +1 -1
  80. package/src/assets/web-panel/assets/Terminal-DwzGMniO.js +3 -0
  81. package/src/assets/web-panel/assets/{TimelineRenderer-D5qkbPKT.js → TimelineRenderer-DoZ8y7y8.js} +1 -1
  82. package/src/assets/web-panel/assets/{Tokens-DKgwn8hI.js → Tokens-390cg2TC.js} +1 -1
  83. package/src/assets/web-panel/assets/{Trigger-HlEHniGM.js → Trigger-CLrtCj5_.js} +1 -1
  84. package/src/assets/web-panel/assets/{Trust-CdPcsBpN.js → Trust-DpESfSPn.js} +1 -1
  85. package/src/assets/web-panel/assets/{UkeySign-vAdXd-vG.js → UkeySign-CN6279O0.js} +1 -1
  86. package/src/assets/web-panel/assets/{VideoEditing-9hHBYFnH.js → VideoEditing-DPtAUlSe.js} +1 -1
  87. package/src/assets/web-panel/assets/{Wallet-Dxh5d1yR.js → Wallet-nKOMV_1n.js} +4 -4
  88. package/src/assets/web-panel/assets/{WebAuthn-BsFmLHkp.js → WebAuthn-HuXlSOc4.js} +5 -5
  89. package/src/assets/web-panel/assets/{WorkflowEditor-Cn0OIwLn.js → WorkflowEditor-CUfFjARi.js} +1 -1
  90. package/src/assets/web-panel/assets/chat-6Eq0PcZJ.js +1 -0
  91. package/src/assets/web-panel/assets/{colors-Du9jzLN0.js → colors-BP_Sf6Iy.js} +1 -1
  92. package/src/assets/web-panel/assets/{compact-item-DhEscfzw.js → compact-item-BufMKIh5.js} +1 -1
  93. package/src/assets/web-panel/assets/{createContext-CwzEfF3i.js → createContext-BBMXxWSW.js} +1 -1
  94. package/src/assets/web-panel/assets/devWarning-DgVKduH2.js +1 -0
  95. package/src/assets/web-panel/assets/{hasIn-DT_GSE6J.js → hasIn-fUK_tRO2.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-tND8-TDU.js → index-2A5ph8b2.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-B8s5FxJY.js → index-3FuwBewR.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-53z1YUxX.js → index-6GmBa4Kg.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-BFD0cEna.js → index-B2vS66eI.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-CQWxDOvM.js → index-B7Etk0Te.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-VeHs6qH0.js → index-B9WYSn4m.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-CGvgnfl9.js → index-BHy6yNiF.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-D3llLkYM.js → index-BMLHv389.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-Dny_ZnAO.js → index-BWKoBU8R.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-DzjzrOli.js → index-Bkg4ZePE.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-DN60VBn5.js → index-C44atv4k.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-v5HLYCVa.js → index-CE2DdTP2.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-BF-ZCVGE.js → index-CGjmILDm.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-gFjYdstW.js → index-CW_G-MXw.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-NA2oBLSB.js → index-CZ6Yt17L.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-Mobw3PHs.js → index-CeASi4fr.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-DWL3SYN3.js → index-CgiECHu2.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-1LoutPJd.js → index-Cp8vhyZy.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-BnHhFnwt.js → index-CwSf5pnf.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-B6QDWRLk.js → index-D4_MuGkd.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-D-QkW1fp.js → index-D9vU25ij.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-C4SN3by5.js → index-DASluSqY.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-CyEhUJcu.js → index-DLpIs_P_.js} +1 -1
  119. package/src/assets/web-panel/assets/index-DOZTSoS7.js +1 -0
  120. package/src/assets/web-panel/assets/{index-BrkJ7JPm.js → index-DPdUNk1i.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-Cnok8mhZ.js → index-DVsqvI4M.js} +1 -1
  122. package/src/assets/web-panel/assets/index-DhpvjpqI.js +1 -0
  123. package/src/assets/web-panel/assets/{index-CAVW0cWM.js → index-DmkMXwnR.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-Cc9aPkv-.js → index-DocdRcbd.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-DnVVYKCE.js → index-Dyngbd29.js} +20 -20
  126. package/src/assets/web-panel/assets/{index-D8gt0j7r.js → index-GwdRUZ-x.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-BIYTjbv_.js → index-LvCBfTLo.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-DhXay17G.js → index-cpEli44X.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-BQWENaZf.js → index-fzaMtSJ8.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-DfRDyY1q.js → index-pum7HYBA.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-BgSR2WMG.js → index-t8N1tSeX.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-D5IytTND.js → index-uCbEN7cY.js} +1 -1
  133. package/src/assets/web-panel/assets/{index-DtRwLhee.js → index-wKTLbKyc.js} +1 -1
  134. package/src/assets/web-panel/assets/{index-D4kZoXNr.js → index-wV6iGdpY.js} +1 -1
  135. package/src/assets/web-panel/assets/{initDefaultProps-Cvt59c10.js → initDefaultProps-V5Fo95FM.js} +1 -1
  136. package/src/assets/web-panel/assets/{motion-D15pPEzl.js → motion-BYWU0hUT.js} +1 -1
  137. package/src/assets/web-panel/assets/{move-N55KeXJ7.js → move-Cr1M-J2h.js} +1 -1
  138. package/src/assets/web-panel/assets/{mtc-parser-CyFO1bYP.js → mtc-parser-BysQKi2N.js} +1 -1
  139. package/src/assets/web-panel/assets/{omit-B5IXfxU2.js → omit-D1zHU8GC.js} +1 -1
  140. package/src/assets/web-panel/assets/{pickAttrs-CpVqsulV.js → pickAttrs-CUArxtfi.js} +1 -1
  141. package/src/assets/web-panel/assets/{placementArrow-ME36sMF3.js → placementArrow-ChoYEys0.js} +1 -1
  142. package/src/assets/web-panel/assets/{responsiveObserve-BXAIR1r-.js → responsiveObserve-BQRs3Mo7.js} +1 -1
  143. package/src/assets/web-panel/assets/{slide-BkOX3-Dp.js → slide-B8zbsCkg.js} +1 -1
  144. package/src/assets/web-panel/assets/{statusUtils-Cy4Aklpt.js → statusUtils-C2U8Gs6h.js} +1 -1
  145. package/src/assets/web-panel/assets/{styleChecker-gUd2T206.js → styleChecker-Dd8MgL_V.js} +1 -1
  146. package/src/assets/web-panel/assets/{useFlexGapSupport-CaVD4o99.js → useFlexGapSupport-hknqY5NH.js} +1 -1
  147. package/src/assets/web-panel/assets/{useFs--pFGl0KD.js → useFs-CLTAmcfw.js} +1 -1
  148. package/src/assets/web-panel/assets/{usePersonalDataHub-D45iP86i.js → usePersonalDataHub-ByegHbiB.js} +1 -1
  149. package/src/assets/web-panel/assets/{vnode-BayoChH_.js → vnode-DqlAy5DP.js} +1 -1
  150. package/src/assets/web-panel/assets/{zoom-CpP38poi.js → zoom-DiXiztQn.js} +1 -1
  151. package/src/assets/web-panel/index.html +1 -1
  152. package/src/commands/agenda.js +115 -3
  153. package/src/commands/agent.js +10 -1
  154. package/src/commands/background-session.js +2 -1
  155. package/src/commands/context.js +69 -2
  156. package/src/data/changelog.json +26 -0
  157. package/src/gateways/terminal/PtyManager.js +45 -4
  158. package/src/gateways/ws/background-agent-protocol.js +38 -0
  159. package/src/gateways/ws/message-dispatcher.js +1 -0
  160. package/src/gateways/ws/remote-session-protocol.js +65 -6
  161. package/src/gateways/ws/ws-server.js +18 -2
  162. package/src/harness/background-task-manager.js +70 -2
  163. package/src/harness/feature-flags.js +15 -8
  164. package/src/harness/mcp-client.js +618 -43
  165. package/src/harness/worktree-isolator.js +14 -3
  166. package/src/lazy-dispatch.js +30 -1
  167. package/src/lib/agent-authority.js +22 -0
  168. package/src/lib/agent-core.js +3 -0
  169. package/src/lib/agent-sandbox.js +161 -0
  170. package/src/lib/agent-schedule-store.js +45 -22
  171. package/src/lib/agent-team/team-runner.js +22 -0
  172. package/src/lib/artifact-store.js +35 -0
  173. package/src/lib/async-hook-supervisor.cjs +13 -2
  174. package/src/lib/audit-mtc.js +3 -2
  175. package/src/lib/background-agent-supervisor.js +104 -3
  176. package/src/lib/background-interaction-journal.js +407 -0
  177. package/src/lib/background-interaction-resolver.js +23 -34
  178. package/src/lib/background-session-transport.js +12 -2
  179. package/src/lib/capability-manifest.js +41 -3
  180. package/src/lib/capability-negotiation.js +1 -1
  181. package/src/lib/channels/channel-manager.js +33 -0
  182. package/src/lib/channels/telegram-channel.js +23 -5
  183. package/src/lib/channels/webhook-channel.js +38 -15
  184. package/src/lib/chrome-connector.js +169 -23
  185. package/src/lib/config-manager.js +23 -9
  186. package/src/lib/context-breakdown.js +31 -0
  187. package/src/lib/cowork-cron.js +274 -32
  188. package/src/lib/cross-chain-mtc.js +3 -2
  189. package/src/lib/durable-security-store.js +124 -0
  190. package/src/lib/event-runtime-host.js +67 -6
  191. package/src/lib/event-runtime-store.js +163 -0
  192. package/src/lib/goal-store.js +32 -12
  193. package/src/lib/headless-manifest.js +2 -1
  194. package/src/lib/hook-environment.cjs +58 -0
  195. package/src/lib/hook-manager.js +12 -5
  196. package/src/lib/hook-runner.cjs +122 -28
  197. package/src/lib/hook-runner.js +7 -2
  198. package/src/lib/hooks-v2-producers.js +36 -0
  199. package/src/lib/hooks-v2-runtime.js +329 -52
  200. package/src/lib/interaction-adapter.js +60 -19
  201. package/src/lib/interaction-binding.js +64 -0
  202. package/src/lib/json-schema-output.js +439 -14
  203. package/src/lib/json-schema-validate.js +514 -883
  204. package/src/lib/lan-pairing-tokens.js +115 -57
  205. package/src/lib/lsp/__tests__/lsp-client.test.js +32 -0
  206. package/src/lib/lsp/__tests__/lsp-manager.test.js +25 -0
  207. package/src/lib/lsp/lsp-client.js +4 -0
  208. package/src/lib/lsp/lsp-manager.js +3 -0
  209. package/src/lib/lsp/lsp-server-registry.js +18 -0
  210. package/src/lib/mcp-client.js +1 -0
  211. package/src/lib/mcp-oauth.js +35 -21
  212. package/src/lib/packer/pkg-config-generator.js +3 -0
  213. package/src/lib/permission-decision.js +99 -0
  214. package/src/lib/plugin-monitor-supervisor.js +3 -0
  215. package/src/lib/plugin-runtime/bin.js +1148 -70
  216. package/src/lib/plugin-runtime/capabilities.js +50 -0
  217. package/src/lib/plugin-runtime/capability-consent.js +42 -35
  218. package/src/lib/plugin-runtime/hooks.js +36 -9
  219. package/src/lib/plugin-runtime/install.js +23 -7
  220. package/src/lib/plugin-runtime/lsp.js +4 -0
  221. package/src/lib/plugin-runtime/manifest.js +112 -8
  222. package/src/lib/plugin-runtime/mcp.js +30 -5
  223. package/src/lib/plugin-runtime/monitors.js +11 -0
  224. package/src/lib/plugin-runtime/plugin-options.js +94 -38
  225. package/src/lib/plugin-runtime/policy.js +29 -2
  226. package/src/lib/plugin-runtime/sandbox-policy.js +84 -0
  227. package/src/lib/plugin-runtime/scopes.js +27 -13
  228. package/src/lib/plugin-runtime/trust.js +36 -31
  229. package/src/lib/process-execution-broker/credential-agent.js +114 -16
  230. package/src/lib/process-execution-broker/credential-transport-worker.js +312 -0
  231. package/src/lib/process-execution-broker/credential-transport.js +378 -0
  232. package/src/lib/process-execution-broker/index.js +765 -49
  233. package/src/lib/process-execution-broker/platform-sandbox.js +4233 -138
  234. package/src/lib/process-execution-broker/windows-sandbox-helper.dll +0 -0
  235. package/src/lib/process-execution-broker/windows-sandbox-helper.exe +0 -0
  236. package/src/lib/process-execution-broker/windows-sandbox.cs +3856 -0
  237. package/src/lib/project-mcp-trust.js +21 -26
  238. package/src/lib/protocol-replay.js +19 -12
  239. package/src/lib/repl-bang-memorize.js +67 -10
  240. package/src/lib/settings-hooks.cjs +13 -0
  241. package/src/lib/skill-loader.js +83 -10
  242. package/src/lib/slash-commands.js +27 -4
  243. package/src/lib/sync-credentials.js +5 -4
  244. package/src/lib/turn-binding.js +8 -6
  245. package/src/repl/agent-repl.js +117 -31
  246. package/src/repl/repl-turn-binding.js +5 -2
  247. package/src/runtime/agent-core.js +699 -70
  248. package/src/runtime/agent-runtime.js +13 -1
  249. package/src/runtime/coding-agent-contract-shared.cjs +3 -3
  250. package/src/runtime/headless-runner.js +105 -7
  251. package/src/runtime/headless-stream.js +209 -23
  252. package/src/runtime/mcp-config.js +29 -17
  253. package/src/runtime/policies/agent-policy.js +2 -0
  254. package/src/workers/background-agent-worker.js +128 -13
  255. package/src/assets/web-panel/assets/ChatBubbleRenderer-C7bofJuA.js +0 -1
  256. package/src/assets/web-panel/assets/Projects-BbgmyQnS.js +0 -1
  257. package/src/assets/web-panel/assets/RemoteSession-Bqk3EYSu.js +0 -4
  258. package/src/assets/web-panel/assets/Tasks-3bDAUz8K.js +0 -1
  259. package/src/assets/web-panel/assets/Terminal-CsMLKIoV.js +0 -3
  260. package/src/assets/web-panel/assets/chat-CJ19O6Dh.js +0 -1
  261. package/src/assets/web-panel/assets/devWarning-BBMFnsja.js +0 -1
  262. package/src/assets/web-panel/assets/index-Do8JMV4N.js +0 -1
  263. package/src/assets/web-panel/assets/index-UYAJ6iNM.js +0 -1
@@ -48,9 +48,11 @@ import {
48
48
  appendCompactEvent,
49
49
  appendTokenUsage,
50
50
  appendToolCallCompact,
51
+ appendEvent,
51
52
  rebuildMessages,
52
53
  sessionExists,
53
54
  } from "../harness/jsonl-session-store.js";
55
+ import { CLISkillLoader } from "../lib/skill-loader.js";
54
56
  import { storeMemory, consolidateMemory } from "../lib/hierarchical-memory.js";
55
57
  import { CLIContextEngineering } from "../lib/cli-context-engineering.js";
56
58
  import { defaultPrepareCall } from "../lib/turn-context.js";
@@ -64,6 +66,7 @@ import { CLIPermanentMemory } from "../lib/permanent-memory.js";
64
66
  import { CLIAutonomousAgent, GoalStatus } from "../lib/autonomous-agent.js";
65
67
  import {
66
68
  PromptCompressor,
69
+ estimateTokens,
67
70
  getContextWindow,
68
71
  } from "../harness/prompt-compressor.js";
69
72
  import {
@@ -912,8 +915,9 @@ export async function startAgentRepl(options = {}) {
912
915
  _pluginMonitors = null;
913
916
  }
914
917
 
915
- // Put trusted plugins' bin/ executables on PATH for the session (Phase 3.3n),
916
- // restored at SessionEnd. Trust-gated inside collectPluginBinDirs.
918
+ // Preserve PATH compatibility for trusted legacy bin components without a
919
+ // sandboxPolicy, restored at SessionEnd. Policy-bearing bins stay off PATH
920
+ // and use agent-core's exact direct Broker route.
917
921
  try {
918
922
  const { applyPluginBinPath } = await import("../lib/plugin-runtime/bin.js");
919
923
  const res = applyPluginBinPath({ cwd: process.cwd() });
@@ -1088,20 +1092,31 @@ export async function startAgentRepl(options = {}) {
1088
1092
  // their existing behaviour byte-identically.
1089
1093
  const _leanNoProjectMemory = options.projectMemory === false;
1090
1094
  let _loadedReplInstructions = null;
1091
- let _replBaseSystem = composeSystemPrompt(
1092
- buildSystemPrompt(process.cwd(), {
1093
- additionalDirectories,
1094
- projectMemory: options.projectMemory,
1095
- }),
1096
- {
1097
- systemPrompt: options.systemPrompt,
1098
- appendSystemPrompt: options.appendSystemPrompt,
1099
- projectMemory: _leanNoProjectMemory ? false : undefined,
1100
- onInstructionsLoaded: (loaded) => {
1101
- _loadedReplInstructions = loaded;
1095
+ let _loadedReplPersonaSkills = [];
1096
+ let _replSkillCacheLedger = null;
1097
+ const _replSkillLoader = options.skillLoader || new CLISkillLoader();
1098
+ const _buildReplBaseSystem = () =>
1099
+ composeSystemPrompt(
1100
+ buildSystemPrompt(process.cwd(), {
1101
+ additionalDirectories,
1102
+ projectMemory: options.projectMemory,
1103
+ sessionId,
1104
+ skillLoader: _replSkillLoader,
1105
+ onSkillsLoaded: (skills, cacheLedger) => {
1106
+ _loadedReplPersonaSkills = Array.isArray(skills) ? skills : [];
1107
+ _replSkillCacheLedger = cacheLedger || null;
1108
+ },
1109
+ }),
1110
+ {
1111
+ systemPrompt: options.systemPrompt,
1112
+ appendSystemPrompt: options.appendSystemPrompt,
1113
+ projectMemory: _leanNoProjectMemory ? false : undefined,
1114
+ onInstructionsLoaded: (loaded) => {
1115
+ _loadedReplInstructions = loaded;
1116
+ },
1102
1117
  },
1103
- },
1104
- );
1118
+ );
1119
+ let _replBaseSystem = _buildReplBaseSystem();
1105
1120
  let _activeOutputStyle = null; // { name, body }
1106
1121
  const messages = [{ role: "system", content: _replBaseSystem }];
1107
1122
  // Resume-degenerate role sanitation (Claude Code 2.1.187 parity): a one-shot
@@ -1184,6 +1199,46 @@ export async function startAgentRepl(options = {}) {
1184
1199
  // for this session via the shared mcp-config engine. Holds {mcpClient,
1185
1200
  // extraToolDefinitions, externalToolExecutors, externalToolDescriptors}.
1186
1201
  let _adhocMcp = null;
1202
+ const _persistReplContextSources = () => {
1203
+ if (!useJsonl || !sessionId) return false;
1204
+ _replSkillCacheLedger =
1205
+ _replSkillLoader.getCacheLedger?.() || _replSkillCacheLedger;
1206
+ const mcpDefinitions = _adhocMcp?.extraToolDefinitions || [];
1207
+ if (
1208
+ mcpDefinitions.length === 0 &&
1209
+ _loadedReplPersonaSkills.length === 0 &&
1210
+ !_replSkillCacheLedger?.descriptors?.resident
1211
+ ) {
1212
+ return false;
1213
+ }
1214
+ try {
1215
+ appendEvent(sessionId, "context_sources", {
1216
+ mcp: mcpDefinitions.map((definition) => ({
1217
+ function: {
1218
+ name: definition?.function?.name || null,
1219
+ description: definition?.function?.description || "",
1220
+ parameters: definition?.function?.parameters || {},
1221
+ },
1222
+ })),
1223
+ skills: _loadedReplPersonaSkills.map((skill) => ({
1224
+ id: skill?.id || skill?.displayName || "skill",
1225
+ displayName: skill?.displayName || skill?.id || "skill",
1226
+ source: skill?.source || "skill",
1227
+ tokens: estimateTokens(
1228
+ `## Persona: ${skill?.displayName || skill?.id || "skill"}\n${
1229
+ typeof skill?.body === "string" ? skill.body : ""
1230
+ }`,
1231
+ ),
1232
+ bodyLoaded: skill?.bodyLoaded === true,
1233
+ })),
1234
+ skillCache: _replSkillCacheLedger,
1235
+ });
1236
+ return true;
1237
+ } catch {
1238
+ // Source attribution must never make an interactive turn fail.
1239
+ return false;
1240
+ }
1241
+ };
1187
1242
  if (options.bundlePath) {
1188
1243
  try {
1189
1244
  const { loadBundle } =
@@ -1338,6 +1393,7 @@ export async function startAgentRepl(options = {}) {
1338
1393
  _adhocMcp = null;
1339
1394
  }
1340
1395
  }
1396
+ _persistReplContextSources();
1341
1397
 
1342
1398
  // Seed connected MCP servers with the startup workspace roots when the session
1343
1399
  // began with extra `--add-dir` roots — otherwise `roots/list` would only ever
@@ -1779,6 +1835,36 @@ export async function startAgentRepl(options = {}) {
1779
1835
  new Promise((resolve) => {
1780
1836
  const label =
1781
1837
  request.message || "MCP server requests additional input";
1838
+ if (request.mode === "url") {
1839
+ rl.question(
1840
+ chalk.yellow(
1841
+ `\n MCP [${request.server}] ${label}\n` +
1842
+ ` Host: ${request.urlHost}\n` +
1843
+ ` URL: ${request.url}\n` +
1844
+ " Open this secure page? [y/N] ",
1845
+ ),
1846
+ async (answer) => {
1847
+ const approved = /^(y|yes)$/i.test(
1848
+ String(answer || "").trim(),
1849
+ );
1850
+ if (!approved) {
1851
+ resolve({ action: "decline" });
1852
+ rl.prompt();
1853
+ return;
1854
+ }
1855
+ try {
1856
+ const { defaultOpenBrowser } =
1857
+ await import("../lib/mcp-oauth.js");
1858
+ const opened = defaultOpenBrowser(request.url);
1859
+ resolve(opened ? { action: "accept" } : { action: "cancel" });
1860
+ } catch {
1861
+ resolve({ action: "cancel" });
1862
+ }
1863
+ rl.prompt();
1864
+ },
1865
+ );
1866
+ return;
1867
+ }
1782
1868
  rl.question(
1783
1869
  chalk.yellow(`\n MCP [${request.server}] ${label}\n > `),
1784
1870
  (answer) => {
@@ -2531,17 +2617,7 @@ export async function startAgentRepl(options = {}) {
2531
2617
  additionalDirectories.push(res.dir);
2532
2618
  // Re-advertise the updated roots in the system prompt; keep the
2533
2619
  // active output-style body layered on top (same as /output-style).
2534
- _replBaseSystem = composeSystemPrompt(
2535
- buildSystemPrompt(process.cwd(), {
2536
- additionalDirectories,
2537
- projectMemory: options.projectMemory,
2538
- }),
2539
- {
2540
- systemPrompt: options.systemPrompt,
2541
- appendSystemPrompt: options.appendSystemPrompt,
2542
- projectMemory: _leanNoProjectMemory ? false : undefined,
2543
- },
2544
- );
2620
+ _replBaseSystem = _buildReplBaseSystem();
2545
2621
  messages[0].content = _activeOutputStyle
2546
2622
  ? `${_replBaseSystem}\n\n${_activeOutputStyle.body}`
2547
2623
  : _replBaseSystem;
@@ -3709,11 +3785,16 @@ export async function startAgentRepl(options = {}) {
3709
3785
  // layers (incl. .claude/skills) without restarting the session.
3710
3786
  if (trimmed === "/reload-skills") {
3711
3787
  try {
3712
- const { reloadSkills } = await import("../runtime/agent-core.js");
3713
- const n = reloadSkills();
3788
+ _replSkillLoader.clearCache();
3789
+ const n = _replSkillLoader.loadAll().length;
3790
+ _replBaseSystem = _buildReplBaseSystem();
3791
+ messages[0].content = _activeOutputStyle
3792
+ ? `${_replBaseSystem}\n\n${_activeOutputStyle.body}`
3793
+ : _replBaseSystem;
3794
+ _persistReplContextSources();
3714
3795
  logger.log(
3715
3796
  chalk.green(
3716
- `✔ skills reloaded — ${n} available (6 layers re-scanned)`,
3797
+ `✔ skills reloaded — ${n} available (${_replSkillLoader.getLayerPaths().length} layers re-scanned)`,
3717
3798
  ),
3718
3799
  );
3719
3800
  } catch (err) {
@@ -3796,7 +3877,7 @@ export async function startAgentRepl(options = {}) {
3796
3877
  /* monitor restart is best-effort */
3797
3878
  }
3798
3879
 
3799
- // Re-apply plugin bin PATH (a newly-trusted plugin's executables).
3880
+ // Re-apply legacy plugin bin PATH; strict bins remain direct-only.
3800
3881
  try {
3801
3882
  const { applyPluginBinPath } =
3802
3883
  await import("../lib/plugin-runtime/bin.js");
@@ -5311,7 +5392,9 @@ export async function startAgentRepl(options = {}) {
5311
5392
  },
5312
5393
  });
5313
5394
  }
5314
- _turnBindingProducer?.beginTurn(messages.length);
5395
+ _turnBindingProducer?.beginTurn(messages.length, {
5396
+ worktreeId: options.worktreeId ?? null,
5397
+ });
5315
5398
  } catch (error) {
5316
5399
  _turnBindingCriticalError =
5317
5400
  error instanceof Error ? error : new Error(String(error));
@@ -5527,6 +5610,7 @@ export async function startAgentRepl(options = {}) {
5527
5610
  contextEngine,
5528
5611
  iterationBudget,
5529
5612
  sessionId,
5613
+ skillLoader: _replSkillLoader,
5530
5614
  cwd: process.cwd(),
5531
5615
  additionalDirectories,
5532
5616
  sandbox: _sandbox,
@@ -5568,6 +5652,7 @@ export async function startAgentRepl(options = {}) {
5568
5652
  externalToolDescriptors: _adhocMcp?.externalToolDescriptors,
5569
5653
  chatFn: _fallbackChatFn,
5570
5654
  });
5655
+ _persistReplContextSources();
5571
5656
  _turnAbort = null;
5572
5657
 
5573
5658
  // Strip the one-shot /btw aside now the model has seen it — so it is never
@@ -5933,6 +6018,7 @@ export async function startAgentRepl(options = {}) {
5933
6018
  if (sessionId) {
5934
6019
  try {
5935
6020
  if (useJsonl) {
6021
+ _persistReplContextSources();
5936
6022
  // JSONL: write final compact snapshot for fast rebuild
5937
6023
  appendCompactEvent(sessionId, {
5938
6024
  strategy: "session-end",
@@ -71,7 +71,7 @@ export function createReplTurnBindingProducer({
71
71
  * appended, with `conversationOffset = messages.length` — the exact-match
72
72
  * contract `pickPersistedTurn` relies on.
73
73
  */
74
- beginTurn(conversationOffset) {
74
+ beginTurn(conversationOffset, { worktreeId = null } = {}) {
75
75
  try {
76
76
  if (!feed) {
77
77
  feed = createTurnBindingFeed({
@@ -79,7 +79,10 @@ export function createReplTurnBindingProducer({
79
79
  nonce: runNonce,
80
80
  });
81
81
  }
82
- return feed.beginTurn(conversationOffset, { supersede: true });
82
+ return feed.beginTurn(conversationOffset, {
83
+ supersede: true,
84
+ worktreeId,
85
+ });
83
86
  } catch (error) {
84
87
  return rejectOr(error, "load", null);
85
88
  }