chainlesschain 0.162.176 → 0.162.177

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 (221) hide show
  1. package/package.json +1 -1
  2. package/src/assets/web-panel/assets/{AIOps-BDLu5Elz.js → AIOps-DT-VPWuN.js} +1 -1
  3. package/src/assets/web-panel/assets/{ActionButton-DH5us-CK.js → ActionButton-DyOreOVN.js} +1 -1
  4. package/src/assets/web-panel/assets/{Analytics-BZ0u8IFG.js → Analytics-DslNsKux.js} +3 -3
  5. package/src/assets/web-panel/assets/{AppLayout-Duu8xR14.js → AppLayout-BNJJAYME.js} +5 -5
  6. package/src/assets/web-panel/assets/{Artifacts-Br2YBbh_.js → Artifacts-DoaAtEcY.js} +1 -1
  7. package/src/assets/web-panel/assets/{Audit-C3C6a482.js → Audit-DPG3WdJ9.js} +1 -1
  8. package/src/assets/web-panel/assets/{BackgroundAgents-CzHvebcj.js → BackgroundAgents-C_JO6R5G.js} +1 -1
  9. package/src/assets/web-panel/assets/{Backup-DZNHYDFd.js → Backup-Cv3BooyX.js} +1 -1
  10. package/src/assets/web-panel/assets/{BaseInput-VRiC4fIx.js → BaseInput-D2uQXWu-.js} +1 -1
  11. package/src/assets/web-panel/assets/{Chat-Cm08WWAD.js → Chat-B4Vczyf3.js} +4 -4
  12. package/src/assets/web-panel/assets/ChatBubbleRenderer-DE6reP99.js +1 -0
  13. package/src/assets/web-panel/assets/{Checkbox-DtByk7d7.js → Checkbox-qTgk4VeP.js} +1 -1
  14. package/src/assets/web-panel/assets/{Codegen-CphXXOfD.js → Codegen-DlLWcIzj.js} +1 -1
  15. package/src/assets/web-panel/assets/{Col-Hz86TnLR.js → Col-DNO73qp7.js} +1 -1
  16. package/src/assets/web-panel/assets/{Community-HP03ltpD.js → Community-vRDNpc4j.js} +1 -1
  17. package/src/assets/web-panel/assets/{Compact-B_N1mqQz.js → Compact-CEWtIXni.js} +1 -1
  18. package/src/assets/web-panel/assets/{Compliance-CVztRpi8.js → Compliance-KgYC9Fxi.js} +1 -1
  19. package/src/assets/web-panel/assets/{Cowork-wUVOyZih.js → Cowork-zj5wvkpT.js} +4 -4
  20. package/src/assets/web-panel/assets/{Cron-DW5TLJKw.js → Cron-BLDoCozU.js} +2 -2
  21. package/src/assets/web-panel/assets/{Crosschain-CrAFGhWH.js → Crosschain-BYnff4VY.js} +1 -1
  22. package/src/assets/web-panel/assets/{DID-pA-oD8ke.js → DID-C75VFsVm.js} +2 -2
  23. package/src/assets/web-panel/assets/{Dashboard-CXrd5gAw.js → Dashboard-C4Gutni2.js} +2 -2
  24. package/src/assets/web-panel/assets/{Dropdown-EweJcsek.js → Dropdown-B5dbO4Kx.js} +1 -1
  25. package/src/assets/web-panel/assets/{EmailListRenderer-C9xVLPG4.js → EmailListRenderer-BDipZtHJ.js} +1 -1
  26. package/src/assets/web-panel/assets/{FamilyGuardDashboard-CDcEEqlu.js → FamilyGuardDashboard-DmIzt8jj.js} +1 -1
  27. package/src/assets/web-panel/assets/{Federation-DtZda9A_.js → Federation-D9QOS-uW.js} +1 -1
  28. package/src/assets/web-panel/assets/{FormItemContext-CiYdcVz3.js → FormItemContext-B47HRwAm.js} +1 -1
  29. package/src/assets/web-panel/assets/{GenericCardRenderer-DA13uwA0.js → GenericCardRenderer-3R4mXmgV.js} +1 -1
  30. package/src/assets/web-panel/assets/{Git-DzRhZD1O.js → Git-DrNXZf1C.js} +2 -2
  31. package/src/assets/web-panel/assets/{Governance-D5RMgOSb.js → Governance-BGd7JR98.js} +1 -1
  32. package/src/assets/web-panel/assets/{Inference-BgrPfSNk.js → Inference-D-2he1ed.js} +1 -1
  33. package/src/assets/web-panel/assets/{KnowledgeGraph-DzjnD571.js → KnowledgeGraph-C0sHIbK5.js} +1 -1
  34. package/src/assets/web-panel/assets/{Logs-BhWzVDtN.js → Logs-DiBQO-jL.js} +2 -2
  35. package/src/assets/web-panel/assets/{MarkdownRenderer-BDape9cx.js → MarkdownRenderer-DL_5eV2D.js} +1 -1
  36. package/src/assets/web-panel/assets/{Marketplace-DJtL5GV7.js → Marketplace-VR59OdrC.js} +1 -1
  37. package/src/assets/web-panel/assets/{McpTools-CZcQygI7.js → McpTools-DrPzwSd3.js} +5 -5
  38. package/src/assets/web-panel/assets/{Memory-DUWSDUUu.js → Memory-CBgKALwQ.js} +2 -2
  39. package/src/assets/web-panel/assets/{MobileBridge-BTwq2WKY.js → MobileBridge-pQ9Tn-Mn.js} +1 -1
  40. package/src/assets/web-panel/assets/MobileProjects-mASB6jyj.js +1 -0
  41. package/src/assets/web-panel/assets/{Mtc-BiGugEQm.js → Mtc-DTMgE7HC.js} +5 -5
  42. package/src/assets/web-panel/assets/{MtcAudit-DY7a6gUe.js → MtcAudit-CwTnCtiL.js} +2 -2
  43. package/src/assets/web-panel/assets/{Multisig-BQbDu_w7.js → Multisig-ngm6WU8f.js} +3 -3
  44. package/src/assets/web-panel/assets/{NLProgramming-CM2wXTLv.js → NLProgramming-4YO4Qww9.js} +1 -1
  45. package/src/assets/web-panel/assets/{Notes-DI6gGs1v.js → Notes-DP1k45mF.js} +4 -4
  46. package/src/assets/web-panel/assets/{NotificationSettings-BsZOLWAB.js → NotificationSettings-r2H8yPKb.js} +1 -1
  47. package/src/assets/web-panel/assets/{OrderTableRenderer-C48mu09U.js → OrderTableRenderer-CoM_Zw0J.js} +1 -1
  48. package/src/assets/web-panel/assets/{Organization-Cds0_tXr.js → Organization-DrO7jRWS.js} +4 -4
  49. package/src/assets/web-panel/assets/{Overflow-WunYMD87.js → Overflow-Cnwu4i4t.js} +1 -1
  50. package/src/assets/web-panel/assets/{P2P-Bo6j4DDv.js → P2P-zi-cDwA_.js} +2 -2
  51. package/src/assets/web-panel/assets/{PdhVaultBrowser-Bh2XPD5f.js → PdhVaultBrowser-DBEryDv7.js} +3 -3
  52. package/src/assets/web-panel/assets/{Permissions-EMvMMC8N.js → Permissions-lqXK2C3x.js} +4 -4
  53. package/src/assets/web-panel/assets/{PersonalDataHub-AX3ypUDV.js → PersonalDataHub-b63T3HJM.js} +2 -2
  54. package/src/assets/web-panel/assets/{Pipeline-BOx8HOgL.js → Pipeline-Kep5KAGW.js} +1 -1
  55. package/src/assets/web-panel/assets/{Privacy-tBeTVQVM.js → Privacy-CHdvOAh1.js} +1 -1
  56. package/src/assets/web-panel/assets/{ProjectInit-CVYg1W4M.js → ProjectInit-BhKfdwe9.js} +2 -2
  57. package/src/assets/web-panel/assets/{ProjectSettings-Dvt5I7y1.js → ProjectSettings-Yavk9K8A.js} +2 -2
  58. package/src/assets/web-panel/assets/{Projects-Cc7FC9-e.js → Projects-CN8E_5Mq.js} +1 -1
  59. package/src/assets/web-panel/assets/{Providers-Ct8xqY-E.js → Providers-Bfym6SQn.js} +1 -1
  60. package/src/assets/web-panel/assets/{QrScannerModal-Cni8Ooja.js → QrScannerModal-CLSQcrlR.js} +1 -1
  61. package/src/assets/web-panel/assets/{QuickAsk-BJVLKdxr.js → QuickAsk-VPa2WKQN.js} +1 -1
  62. package/src/assets/web-panel/assets/{Recommend-DPG8Rbbm.js → Recommend-CGXR8jVU.js} +1 -1
  63. package/src/assets/web-panel/assets/{RemoteSession-DsdR7dCt.js → RemoteSession-C_20YfMB.js} +2 -2
  64. package/src/assets/web-panel/assets/{Reputation-Csg1YM-b.js → Reputation-awZh68UV.js} +1 -1
  65. package/src/assets/web-panel/assets/{Row-D9DoFoEf.js → Row-Ctb4oiYN.js} +1 -1
  66. package/src/assets/web-panel/assets/{RssFeed-BsvKrXMS.js → RssFeed-D3sdjvUV.js} +2 -2
  67. package/src/assets/web-panel/assets/{Search-DFUStfgQ.js → Search-C-zfA4kT.js} +1 -1
  68. package/src/assets/web-panel/assets/{Security-ILg1zxdK.js → Security-D9XlmHA3.js} +4 -4
  69. package/src/assets/web-panel/assets/{Services-Dd41PCaY.js → Services-C3UKnr41.js} +2 -2
  70. package/src/assets/web-panel/assets/{Skeleton-Bzo1cN80.js → Skeleton-BQxagZfF.js} +1 -1
  71. package/src/assets/web-panel/assets/Skills-q6eb6KPZ.js +1 -0
  72. package/src/assets/web-panel/assets/{Sla-jl7UTiRY.js → Sla-DveENvek.js} +1 -1
  73. package/src/assets/web-panel/assets/{SpeechSettings-BePa-RF6.js → SpeechSettings-BFjXLNgF.js} +1 -1
  74. package/src/assets/web-panel/assets/{SyncSettings-DiqqDKGZ.js → SyncSettings-BpHgbaP9.js} +2 -2
  75. package/src/assets/web-panel/assets/Tasks-DvepRb8-.js +1 -0
  76. package/src/assets/web-panel/assets/{Templates-JiDeI06L.js → Templates-DEiaoyve.js} +1 -1
  77. package/src/assets/web-panel/assets/{Tenant-hhgI6zwS.js → Tenant-ITg774nY.js} +1 -1
  78. package/src/assets/web-panel/assets/Terminal-D3ZBcvnb.js +3 -0
  79. package/src/assets/web-panel/assets/{TimelineRenderer-B8uB5Llk.js → TimelineRenderer-BsLU6JjU.js} +1 -1
  80. package/src/assets/web-panel/assets/{Tokens-C3b_6r2z.js → Tokens-Cb5Pquc9.js} +1 -1
  81. package/src/assets/web-panel/assets/{Trigger-tIP7HKVe.js → Trigger-Dwfy-m9N.js} +1 -1
  82. package/src/assets/web-panel/assets/{Trust-vjoc11vJ.js → Trust-CnlSRGG0.js} +1 -1
  83. package/src/assets/web-panel/assets/{UkeySign-DUPBnGuH.js → UkeySign-Y4TlvKVo.js} +1 -1
  84. package/src/assets/web-panel/assets/{VideoEditing-CBvhUY5T.js → VideoEditing-BpKLtTTO.js} +1 -1
  85. package/src/assets/web-panel/assets/{Wallet-DUaQ0uA5.js → Wallet-LLBzIq8x.js} +4 -4
  86. package/src/assets/web-panel/assets/{WebAuthn-DllSivjE.js → WebAuthn-BeSRiusP.js} +5 -5
  87. package/src/assets/web-panel/assets/{WorkflowEditor-xc8D3uO6.js → WorkflowEditor-BK_l1tXO.js} +1 -1
  88. package/src/assets/web-panel/assets/{chat-BVicU7oA.js → chat-DYd-X7Wg.js} +1 -1
  89. package/src/assets/web-panel/assets/{colors-DJzLmhLm.js → colors-C9uip71j.js} +1 -1
  90. package/src/assets/web-panel/assets/{compact-item-BvYRfThE.js → compact-item-JBrfjUP6.js} +1 -1
  91. package/src/assets/web-panel/assets/{createContext-DGXxCBKR.js → createContext-D03fbuiq.js} +1 -1
  92. package/src/assets/web-panel/assets/devWarning-B8LQ8leS.js +1 -0
  93. package/src/assets/web-panel/assets/{hasIn-SBDJB1y4.js → hasIn-DLQOR6l-.js} +1 -1
  94. package/src/assets/web-panel/assets/{index-MjC4G09d.js → index-5YN7F5bO.js} +1 -1
  95. package/src/assets/web-panel/assets/{index-Dm_77jgR.js → index-6GuLRpBQ.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-CtwqO5qo.js → index-B0X76LjX.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-DRfiXB_p.js → index-B46YcgsV.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-VMfwIH5G.js → index-BNCdRmWf.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-hxTODbM1.js → index-BYv-LWdy.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-DMarmfrv.js → index-Ba-Ps_AJ.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-xfluRkCT.js → index-BcBZwlnG.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-BYqz4Wrr.js → index-BdH9l8wl.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-BO1itZaY.js → index-BfOs_bmg.js} +3 -3
  104. package/src/assets/web-panel/assets/index-Bh8BPtqR.js +1 -0
  105. package/src/assets/web-panel/assets/{index-Cf-O_g_8.js → index-BnQgRjsm.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-CKyEivf8.js → index-BpYKLrUT.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-CoJAO1Lm.js → index-BuNFCZCx.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-1SdDS6lR.js → index-ByHO3SqZ.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-DnjPdvR6.js → index-C2zmOsyD.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-Bf-ctERC.js → index-CChQBM1d.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-DCdRAgjy.js → index-CChaISMb.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-Crk5NTb0.js → index-CILVyK3b.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-9gdI7uUW.js → index-CL0ixCxk.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-BJZf9DhV.js → index-CS63r8h3.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-DCqRS6da.js → index-CVZWiUE_.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-DonCnfMr.js → index-Ce0Bf1YF.js} +1 -1
  117. package/src/assets/web-panel/assets/index-CeVrHLzZ.js +1 -0
  118. package/src/assets/web-panel/assets/{index-CloCgBUR.js → index-Ck17i0OD.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-wcCL-miV.js → index-Cpn19c9k.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-BTrBGBJs.js → index-CqWk1FLG.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-e4fXH_WO.js → index-CwoDpKzW.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-DvUTDYXX.js → index-D-1SqEpQ.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-CdGY9P8a.js → index-D4UY5Z60.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-DKrvvWm4.js → index-D8KvuDz0.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-lpaGoTH3.js → index-DNMAAUVk.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-YJkzy8ZF.js → index-DYLZY4uh.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-FxZzRyE1.js → index-DaokIHt3.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-DHVLJ8q0.js → index-Q7mmL6w4.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-Cs2rmLFt.js → index-SO6lgMg0.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-z1ZylsLq.js → index-iahNhZwm.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-d5BVd-cL.js → index-l08afIbV.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-D7HimK0M.js → index-rIxxfdTN.js} +1 -1
  133. package/src/assets/web-panel/assets/{initDefaultProps-C1zO1KnY.js → initDefaultProps-CG9z1c6w.js} +1 -1
  134. package/src/assets/web-panel/assets/{motion-CWLtEGmC.js → motion-B1Ky7Zff.js} +1 -1
  135. package/src/assets/web-panel/assets/{move-DzD_C3Vm.js → move-DME8X2P1.js} +1 -1
  136. package/src/assets/web-panel/assets/{mtc-parser-D880PYJl.js → mtc-parser-cuJYSWB7.js} +1 -1
  137. package/src/assets/web-panel/assets/{omit-CFR_z2ov.js → omit-UI_EE0uZ.js} +1 -1
  138. package/src/assets/web-panel/assets/{pickAttrs-srIhgrSC.js → pickAttrs-BIoE_Z_V.js} +1 -1
  139. package/src/assets/web-panel/assets/{placementArrow-C1rXpibP.js → placementArrow-B48-9HKN.js} +1 -1
  140. package/src/assets/web-panel/assets/{responsiveObserve-C30gRcSS.js → responsiveObserve-D7x_GDgD.js} +1 -1
  141. package/src/assets/web-panel/assets/{slide-CvtKiMfV.js → slide-DjzC5_7m.js} +1 -1
  142. package/src/assets/web-panel/assets/{statusUtils-DNHO7ITG.js → statusUtils-C6BIymhh.js} +1 -1
  143. package/src/assets/web-panel/assets/{styleChecker-Dt_Sl-g4.js → styleChecker-B4dGrdD9.js} +1 -1
  144. package/src/assets/web-panel/assets/{useFlexGapSupport-Cjev42Gh.js → useFlexGapSupport-Bken4aNE.js} +1 -1
  145. package/src/assets/web-panel/assets/{useFs-Baxglj2V.js → useFs-BMlqECqv.js} +1 -1
  146. package/src/assets/web-panel/assets/{usePersonalDataHub-B4NkcLaP.js → usePersonalDataHub-DLdrfmMa.js} +1 -1
  147. package/src/assets/web-panel/assets/{vnode-mIRkdT7o.js → vnode-CKJQmxa0.js} +1 -1
  148. package/src/assets/web-panel/assets/{zoom-HzI5DlH_.js → zoom-CaZunuau.js} +1 -1
  149. package/src/assets/web-panel/index.html +1 -1
  150. package/src/commands/agenda.js +22 -6
  151. package/src/commands/agent.js +3 -3
  152. package/src/commands/background-session.js +11 -4
  153. package/src/commands/batch.js +79 -27
  154. package/src/commands/changelog.js +15 -4
  155. package/src/commands/eval.js +21 -6
  156. package/src/commands/hook.js +2 -2
  157. package/src/commands/loop.js +9 -2
  158. package/src/commands/skill.js +2 -0
  159. package/src/commands/statusline.js +3 -3
  160. package/src/data/changelog.json +293 -51
  161. package/src/harness/background-task-manager.js +18 -6
  162. package/src/harness/background-task-worker.js +11 -18
  163. package/src/harness/mcp-client.js +9 -15
  164. package/src/harness/worktree-isolator.js +18 -21
  165. package/src/lib/agent-core.js +5 -0
  166. package/src/lib/agent-ipc-bus.js +12 -3
  167. package/src/lib/agent-team/team-worktree.js +28 -6
  168. package/src/lib/agent-worktree.js +20 -19
  169. package/src/lib/async-hook-supervisor.cjs +134 -24
  170. package/src/lib/async-hook-supervisor.js +47 -0
  171. package/src/lib/background-agent-supervisor.js +35 -12
  172. package/src/lib/background-task-manager.js +5 -1
  173. package/src/lib/changelog.js +57 -0
  174. package/src/lib/chrome-connector.js +6 -2
  175. package/src/lib/claude-code-bridge.js +24 -8
  176. package/src/lib/cli-anything-bridge.js +82 -25
  177. package/src/lib/doctor-checkup.js +18 -6
  178. package/src/lib/eval/tasks.js +25 -31
  179. package/src/lib/hook-runner.cjs +71 -36
  180. package/src/lib/hook-runner.js +55 -0
  181. package/src/lib/host-adb-bridge.js +18 -3
  182. package/src/lib/lsp/__tests__/benchmark.test.js +61 -0
  183. package/src/lib/lsp/__tests__/lsp-client.test.js +6 -1
  184. package/src/lib/lsp/benchmark.js +20 -4
  185. package/src/lib/lsp/lsp-client.js +6 -4
  186. package/src/lib/lsp/lsp-server-registry.js +0 -2
  187. package/src/lib/orchestrator.js +8 -2
  188. package/src/lib/packer/pack-update-applier.js +14 -2
  189. package/src/lib/packer/smoke-runner.js +18 -5
  190. package/src/lib/paths.js +1 -1
  191. package/src/lib/plugin-monitor-supervisor.js +20 -13
  192. package/src/lib/plugin-runtime/install.js +10 -3
  193. package/src/lib/repl-bang-memorize.js +10 -2
  194. package/src/lib/repl-goal.js +19 -2
  195. package/src/lib/settings-hook-events.cjs +13 -8
  196. package/src/lib/settings-hook-events.js +20 -0
  197. package/src/lib/skill-packs/generator.js +18 -9
  198. package/src/lib/skill-process-broker.js +71 -0
  199. package/src/lib/slash-commands.js +10 -2
  200. package/src/lib/status-line.cjs +28 -7
  201. package/src/lib/status-line.js +33 -0
  202. package/src/repl/agent-repl.js +48 -43
  203. package/src/runtime/agent-core.js +133 -49
  204. package/src/runtime/headless-runner.js +25 -10
  205. package/src/runtime/headless-stream.js +74 -4
  206. package/src/runtime/session-slash-commands.js +506 -0
  207. package/src/skills/video-editing/extractors/audio-extractor.js +13 -5
  208. package/src/skills/video-editing/extractors/video-extractor.js +13 -3
  209. package/src/skills/video-editing/media-process.js +20 -0
  210. package/src/skills/video-editing/render/audio-mix.js +13 -3
  211. package/src/skills/video-editing/render/ffmpeg-concat.js +7 -2
  212. package/src/skills/video-editing/render/ffmpeg-extract.js +7 -2
  213. package/src/workers/background-agent-worker.js +6 -2
  214. package/src/assets/web-panel/assets/ChatBubbleRenderer-CGHYrugQ.js +0 -1
  215. package/src/assets/web-panel/assets/MobileProjects-NZvvfDME.js +0 -1
  216. package/src/assets/web-panel/assets/Skills-BDHh17P0.js +0 -1
  217. package/src/assets/web-panel/assets/Tasks-DYQ_6lxj.js +0 -1
  218. package/src/assets/web-panel/assets/Terminal-CjTZPa37.js +0 -3
  219. package/src/assets/web-panel/assets/devWarning-BT46Y_QI.js +0 -1
  220. package/src/assets/web-panel/assets/index-B7nuIywP.js +0 -1
  221. package/src/assets/web-panel/assets/index-ycwAfC-i.js +0 -1
@@ -87,6 +87,23 @@ import {
87
87
  recordDenial,
88
88
  formatDenials,
89
89
  } from "../lib/repl-denials.js";
90
+ import executionBroker from "../lib/process-execution-broker/index.js";
91
+
92
+ const goalBrokerRunner = executionBroker.spawnSync.bind(executionBroker);
93
+
94
+ export const _goalProcessDeps = {
95
+ run: goalBrokerRunner,
96
+ };
97
+
98
+ function runHeadlessGoalCommand(command, options = {}) {
99
+ return _goalProcessDeps.run(command, [], {
100
+ ...options,
101
+ timeout: options.timeout ?? 30000,
102
+ origin: "headless-goal:exit-zero",
103
+ policy: "allow",
104
+ scope: "headless-goal",
105
+ });
106
+ }
90
107
 
91
108
  /** Tools that cannot mutate the filesystem or run commands. */
92
109
  export const READ_ONLY_TOOLS = Object.freeze([
@@ -975,7 +992,7 @@ export async function runAgentHeadless(options = {}, deps = {}) {
975
992
  if (settingsHooks) {
976
993
  try {
977
994
  const { runUserPromptSubmitHooks } =
978
- await import("../lib/settings-hook-events.cjs");
995
+ await import("../lib/settings-hook-events.js");
979
996
  const ups = runUserPromptSubmitHooks(settingsHooks, {
980
997
  prompt: userContent,
981
998
  cwd,
@@ -1006,7 +1023,7 @@ export async function runAgentHeadless(options = {}, deps = {}) {
1006
1023
  if (settingsHooks && _loadedInstructions) {
1007
1024
  try {
1008
1025
  const { runInstructionsLoadedHooks } =
1009
- await import("../lib/settings-hook-events.cjs");
1026
+ await import("../lib/settings-hook-events.js");
1010
1027
  instructionsLoadedContext = runInstructionsLoadedHooks(settingsHooks, {
1011
1028
  files: _loadedInstructions.files,
1012
1029
  cwd,
@@ -1022,7 +1039,7 @@ export async function runAgentHeadless(options = {}, deps = {}) {
1022
1039
  if (settingsHooks) {
1023
1040
  try {
1024
1041
  const { runSessionStartHooks } =
1025
- await import("../lib/settings-hook-events.cjs");
1042
+ await import("../lib/settings-hook-events.js");
1026
1043
  sessionStartContext = runSessionStartHooks(settingsHooks, {
1027
1044
  source: resumeId ? "resume" : "startup",
1028
1045
  cwd,
@@ -1041,7 +1058,7 @@ export async function runAgentHeadless(options = {}, deps = {}) {
1041
1058
  if (settingsHooks && resumeId && history.length > 0) {
1042
1059
  try {
1043
1060
  const { runObserveHooks } =
1044
- await import("../lib/settings-hook-events.cjs");
1061
+ await import("../lib/settings-hook-events.js");
1045
1062
  runObserveHooks(
1046
1063
  settingsHooks,
1047
1064
  "SessionResume",
@@ -1313,7 +1330,7 @@ export async function runAgentHeadless(options = {}, deps = {}) {
1313
1330
  if (settingsHooks) {
1314
1331
  try {
1315
1332
  const { AsyncHookSupervisor } =
1316
- await import("../lib/async-hook-supervisor.cjs");
1333
+ await import("../lib/async-hook-supervisor.js");
1317
1334
  _hookSupervisor = new AsyncHookSupervisor({
1318
1335
  persistStats: true,
1319
1336
  // Durably park failed-rewake signals keyed by session so a crash before
@@ -1603,7 +1620,7 @@ export async function runAgentHeadless(options = {}, deps = {}) {
1603
1620
  const _settleAsyncStop = async () => {
1604
1621
  if (!settingsHooks || !_hookSupervisor) return { rewakes: [], results: [] };
1605
1622
  const { dispatchAsyncHooks } =
1606
- await import("../lib/settings-hook-events.cjs");
1623
+ await import("../lib/settings-hook-events.js");
1607
1624
  dispatchAsyncHooks(
1608
1625
  settingsHooks,
1609
1626
  "Stop",
@@ -1783,7 +1800,6 @@ export async function runAgentHeadless(options = {}, deps = {}) {
1783
1800
  process.once("SIGTERM", _onHardSignal);
1784
1801
 
1785
1802
  try {
1786
- // eslint-disable-next-line no-constant-condition
1787
1803
  while (true) {
1788
1804
  // P1 turn→checkpoint binding: one drain of the loop = one turn. Anchor
1789
1805
  // the conversation offset before the model sees the new user turn. A
@@ -2085,8 +2101,7 @@ export async function runAgentHeadless(options = {}, deps = {}) {
2085
2101
  try {
2086
2102
  if (_goalHelpers.isDeterministicCondition(cond)) {
2087
2103
  const gc = deps.goalCheck || {};
2088
- const spawnSync =
2089
- gc.spawnSync || (await import("node:child_process")).spawnSync;
2104
+ const spawnSync = gc.spawnSync || runHeadlessGoalCommand;
2090
2105
  const existsSync =
2091
2106
  gc.existsSync || (await import("node:fs")).existsSync;
2092
2107
  evaluation = _goalHelpers.runDeterministicCheck(cond, {
@@ -2221,7 +2236,7 @@ export async function runAgentHeadless(options = {}, deps = {}) {
2221
2236
  if (settingsHooks) {
2222
2237
  try {
2223
2238
  const { runObserveHooks, dispatchAsyncHooks } =
2224
- await import("../lib/settings-hook-events.cjs");
2239
+ await import("../lib/settings-hook-events.js");
2225
2240
  const stopPayload = { reason: endReason, cwd, session_id: sessionId };
2226
2241
  runObserveHooks(settingsHooks, "Stop", stopPayload, { cwd });
2227
2242
  // Skip the async Stop dispatch/settle here if the auto-rewake re-drive
@@ -86,6 +86,11 @@ import {
86
86
  } from "../lib/side-effect-ledger-store.js";
87
87
  import { operationIdempotencyKey } from "../lib/idempotency.js";
88
88
  import { getPlanModeManager } from "../lib/plan-mode.js";
89
+ import {
90
+ SESSION_SLASH_COMMANDS,
91
+ executeSessionSlashCommand,
92
+ parseSessionSlashCommandEvent,
93
+ } from "./session-slash-commands.js";
89
94
 
90
95
  /**
91
96
  * Resolve the streaming-delta coalesce window (ms). Adjacent partial-message
@@ -429,6 +434,11 @@ export function parseInputEvent(line) {
429
434
  if (obj.features !== undefined) offer.features = obj.features;
430
435
  return { hello: offer };
431
436
  }
437
+ // Session-scoped slash commands (IDE panel / SDK control plane). These are
438
+ // dispatched against live session state and never become model turns:
439
+ // {"type":"slash_command","command":"status","args":"","request_id":"r1"}
440
+ const slashCommand = parseSessionSlashCommandEvent(obj);
441
+ if (slashCommand) return { slashCommand };
432
442
  // Plan-mode control events (chat-panel plan UI):
433
443
  // {"type":"plan","action":"enter"|"approve"|"reject"}
434
444
  if (obj && typeof obj === "object" && obj.type === "plan") {
@@ -943,6 +953,7 @@ export async function runAgentHeadlessStream(options = {}, deps = {}) {
943
953
  // runAgentHeadless for the full semantics. null = no file → unchanged.
944
954
  let permissionRules = options.permissionRules || null;
945
955
  let managedSettings = null;
956
+ let settingsFiles = [];
946
957
  try {
947
958
  const { loadSettings, applyManagedPermissionPolicy } =
948
959
  await import("../lib/settings-loader.cjs");
@@ -952,6 +963,7 @@ export async function runAgentHeadlessStream(options = {}, deps = {}) {
952
963
  managedSettingsFile: options.managedSettingsFile,
953
964
  });
954
965
  managedSettings = loaded.managed;
966
+ settingsFiles = Array.isArray(loaded.files) ? loaded.files : [];
955
967
  if (!permissionRules) {
956
968
  const total =
957
969
  loaded.rules.allow.length +
@@ -1016,6 +1028,8 @@ export async function runAgentHeadlessStream(options = {}, deps = {}) {
1016
1028
  const runLoop = deps.agentLoop || coreAgentLoop;
1017
1029
  const doBootstrap = deps.bootstrap || bootstrap;
1018
1030
  const doExpand = deps.expandFileRefs || expandFileRefsAsync;
1031
+ const runSessionSlashCommand =
1032
+ deps.executeSessionSlashCommand || executeSessionSlashCommand;
1019
1033
  const writeOut = deps.writeOut || ((s) => process.stdout.write(s));
1020
1034
  const writeErr = deps.writeErr || ((s) => process.stderr.write(s));
1021
1035
  // Guard the real stdout/stderr against a downstream `| head` closing the pipe
@@ -1395,7 +1409,7 @@ export async function runAgentHeadlessStream(options = {}, deps = {}) {
1395
1409
  if (settingsHooks && _loadedInstructions) {
1396
1410
  try {
1397
1411
  const { runInstructionsLoadedHooks } =
1398
- await import("../lib/settings-hook-events.cjs");
1412
+ await import("../lib/settings-hook-events.js");
1399
1413
  const ctx = runInstructionsLoadedHooks(settingsHooks, {
1400
1414
  files: _loadedInstructions.files,
1401
1415
  cwd,
@@ -1436,7 +1450,7 @@ export async function runAgentHeadlessStream(options = {}, deps = {}) {
1436
1450
  if (settingsHooks) {
1437
1451
  try {
1438
1452
  const { runSessionStartHooks } =
1439
- await import("../lib/settings-hook-events.cjs");
1453
+ await import("../lib/settings-hook-events.js");
1440
1454
  const ctx = runSessionStartHooks(settingsHooks, {
1441
1455
  source: "startup",
1442
1456
  cwd,
@@ -1520,6 +1534,7 @@ export async function runAgentHeadlessStream(options = {}, deps = {}) {
1520
1534
  mcp: Boolean(options.mcpConfig) || options.useRegisteredMcp !== false,
1521
1535
  enabledToolNames,
1522
1536
  }),
1537
+ slash_commands: [...SESSION_SLASH_COMMANDS],
1523
1538
  input_format: "stream-json",
1524
1539
  additional_directories: additionalDirectories,
1525
1540
  resumed_messages: resumedMessages,
@@ -1858,6 +1873,7 @@ export async function runAgentHeadlessStream(options = {}, deps = {}) {
1858
1873
  let wakeQueue = null;
1859
1874
  let inputDone = false;
1860
1875
  let currentAbort = null;
1876
+ let slashRequestSeq = 0;
1861
1877
  (async () => {
1862
1878
  try {
1863
1879
  for await (const line of readJsonLines(input)) {
@@ -1947,6 +1963,60 @@ export async function runAgentHeadlessStream(options = {}, deps = {}) {
1947
1963
  const parsed = await nextEvent();
1948
1964
  if (parsed == null) break; // stdin closed
1949
1965
 
1966
+ if (parsed.slashCommand) {
1967
+ const requestId =
1968
+ parsed.slashCommand.requestId || `slash-${++slashRequestSeq}`;
1969
+ let result;
1970
+ try {
1971
+ result = await runSessionSlashCommand(
1972
+ parsed.slashCommand,
1973
+ {
1974
+ sessionId,
1975
+ cwd,
1976
+ provider,
1977
+ model,
1978
+ apiKey,
1979
+ messages,
1980
+ messageCount: messages.length,
1981
+ additionalDirectories,
1982
+ extraRoots: additionalDirectories.length,
1983
+ mcp,
1984
+ permissionRules,
1985
+ permissionMode: options.permissionMode || "default",
1986
+ settingsHooks,
1987
+ settingsFiles,
1988
+ loadedInstructions: _loadedInstructions,
1989
+ projectMemoryEnabled:
1990
+ options.projectMemory !== false &&
1991
+ process.env.CC_PROJECT_MEMORY !== "0",
1992
+ },
1993
+ deps.sessionSlashCommandDeps || {},
1994
+ );
1995
+ } catch (error) {
1996
+ result = {
1997
+ ok: false,
1998
+ code: "COMMAND_FAILED",
1999
+ error: String(error?.message || error),
2000
+ };
2001
+ }
2002
+ emit({
2003
+ type: "slash_command_result",
2004
+ request_id: requestId,
2005
+ command: parsed.slashCommand.command,
2006
+ session_id: sessionId,
2007
+ ok: result?.ok === true,
2008
+ ...(result?.ok === true
2009
+ ? { text: String(result.output || "") }
2010
+ : {
2011
+ error: {
2012
+ code: result?.code || "COMMAND_FAILED",
2013
+ message: String(result?.error || "Slash command failed"),
2014
+ },
2015
+ }),
2016
+ });
2017
+ continue;
2018
+ }
2019
+
1950
2020
  // One-time version-skew reminder (see flag declaration above). Best-effort;
1951
2021
  // never blocks a turn. detectVersionSkew() returns null when this process is
1952
2022
  // running the currently-installed version, so a fresh/up-to-date session
@@ -2244,7 +2314,7 @@ export async function runAgentHeadlessStream(options = {}, deps = {}) {
2244
2314
  if (settingsHooks) {
2245
2315
  try {
2246
2316
  const { runUserPromptSubmitHooks } =
2247
- await import("../lib/settings-hook-events.cjs");
2317
+ await import("../lib/settings-hook-events.js");
2248
2318
  const ups = runUserPromptSubmitHooks(settingsHooks, {
2249
2319
  prompt: userContent,
2250
2320
  cwd,
@@ -2596,7 +2666,7 @@ export async function runAgentHeadlessStream(options = {}, deps = {}) {
2596
2666
  if (settingsHooks) {
2597
2667
  try {
2598
2668
  const { runObserveHooks } =
2599
- await import("../lib/settings-hook-events.cjs");
2669
+ await import("../lib/settings-hook-events.js");
2600
2670
  runObserveHooks(
2601
2671
  settingsHooks,
2602
2672
  "SessionEnd",