zidane 7.2.5 → 8.0.4

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 (376) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +34 -6
  3. package/dist/{acp-D-tVyUjw.js → acp-DQDhi2dj.js} +230 -77
  4. package/dist/acp-DQDhi2dj.js.map +1 -0
  5. package/dist/acp-cli.d.ts +1 -1
  6. package/dist/acp-cli.js +9 -66
  7. package/dist/acp-cli.js.map +1 -1
  8. package/dist/acp.d.ts +10 -590
  9. package/dist/acp.d.ts.map +1 -1
  10. package/dist/acp.js +3 -3
  11. package/dist/{agent-D0zZnGbt.js → agent-DSLNmBp0.js} +14401 -13214
  12. package/dist/agent-DSLNmBp0.js.map +1 -0
  13. package/dist/agent.d.ts +1 -1
  14. package/dist/agent.js +3 -2
  15. package/dist/aliasing-lVFbm81n.js +217 -0
  16. package/dist/aliasing-lVFbm81n.js.map +1 -0
  17. package/dist/{anthropic-C2aole0G.js → anthropic-CD00LhUP.js} +1442 -1264
  18. package/dist/anthropic-CD00LhUP.js.map +1 -0
  19. package/dist/artifacts-CV2hUKnL.js.map +1 -1
  20. package/dist/{atomic-write-B7zr1ddF.js → atomic-write-Ijgf2Mhc.js} +13 -3
  21. package/dist/atomic-write-Ijgf2Mhc.js.map +1 -0
  22. package/dist/call-tool-dHlbGOIY.js +70 -0
  23. package/dist/call-tool-dHlbGOIY.js.map +1 -0
  24. package/dist/chat/pure.d.ts +372 -6
  25. package/dist/chat/pure.d.ts.map +1 -1
  26. package/dist/chat/pure.js +35 -244
  27. package/dist/chat/pure.js.map +1 -1
  28. package/dist/{approvals-DKaJZYlm.js → chat-JPJJ8uu5.js} +15879 -14631
  29. package/dist/chat-JPJJ8uu5.js.map +1 -0
  30. package/dist/chat.d.ts +4 -6
  31. package/dist/chat.js +23 -12
  32. package/dist/cli-shared-C-YCaglL.js +159 -0
  33. package/dist/cli-shared-C-YCaglL.js.map +1 -0
  34. package/dist/client-core-BQSyDALT.d.ts +2115 -0
  35. package/dist/client-core-BQSyDALT.d.ts.map +1 -0
  36. package/dist/codemode-worker.d.ts +1 -0
  37. package/dist/codemode-worker.js +155 -0
  38. package/dist/codemode-worker.js.map +1 -0
  39. package/dist/codemode.d.ts +352 -0
  40. package/dist/codemode.d.ts.map +1 -0
  41. package/dist/codemode.js +5 -0
  42. package/dist/connection-Dr-Js4yZ.d.ts +28 -0
  43. package/dist/connection-Dr-Js4yZ.d.ts.map +1 -0
  44. package/dist/connection-loop-gdh22LTI.js +112 -0
  45. package/dist/connection-loop-gdh22LTI.js.map +1 -0
  46. package/dist/context-segments-BHKlagL6.js +1016 -0
  47. package/dist/context-segments-BHKlagL6.js.map +1 -0
  48. package/dist/{context-transport-T_6AYIvy.js → context-transport-DSMTUsK1.js} +3 -3
  49. package/dist/{context-transport-T_6AYIvy.js.map → context-transport-DSMTUsK1.js.map} +1 -1
  50. package/dist/contexts/daytona.d.ts +19 -8
  51. package/dist/contexts/daytona.d.ts.map +1 -1
  52. package/dist/contexts/daytona.js +1 -440
  53. package/dist/contexts/docker.d.ts +36 -7
  54. package/dist/contexts/docker.d.ts.map +1 -1
  55. package/dist/contexts/docker.js +1 -456
  56. package/dist/contexts/e2b.d.ts +68 -13
  57. package/dist/contexts/e2b.d.ts.map +1 -1
  58. package/dist/contexts/e2b.js +1 -382
  59. package/dist/contexts/sandbox.d.ts +1 -1
  60. package/dist/contexts/sandbox.js +5 -0
  61. package/dist/contexts/sandbox.js.map +1 -1
  62. package/dist/{contexts-CRE9pw07.js → contexts-d7UolYot.js} +1059 -524
  63. package/dist/contexts-d7UolYot.js.map +1 -0
  64. package/dist/contexts.d.ts +3 -3
  65. package/dist/contexts.js +1 -1
  66. package/dist/cred-keys-GpBg71cP.js +105 -0
  67. package/dist/cred-keys-GpBg71cP.js.map +1 -0
  68. package/dist/{auth-BG2rVKSt.js → credentials-JttEuRON.js} +55 -206
  69. package/dist/credentials-JttEuRON.js.map +1 -0
  70. package/dist/{cursor-iojRXHF9.js → cursor-CdjaQTBW.js} +3 -3
  71. package/dist/{cursor-iojRXHF9.js.map → cursor-CdjaQTBW.js.map} +1 -1
  72. package/dist/daemon-cli.d.ts +1 -1
  73. package/dist/daemon-cli.js +3 -2
  74. package/dist/daemon-cli.js.map +1 -1
  75. package/dist/daytona-DG3omipZ.js +513 -0
  76. package/dist/daytona-DG3omipZ.js.map +1 -0
  77. package/dist/defaults-Cx3zvDOV.js +23 -0
  78. package/dist/defaults-Cx3zvDOV.js.map +1 -0
  79. package/dist/dispatcher-BMlu2BmZ.js +4941 -0
  80. package/dist/dispatcher-BMlu2BmZ.js.map +1 -0
  81. package/dist/docker-BZhMMJUp.js +727 -0
  82. package/dist/docker-BZhMMJUp.js.map +1 -0
  83. package/dist/e2b-CEVOdRib.js +480 -0
  84. package/dist/e2b-CEVOdRib.js.map +1 -0
  85. package/dist/edit-utils-EGosADZq.js +234 -0
  86. package/dist/edit-utils-EGosADZq.js.map +1 -0
  87. package/dist/environment-8wsKE2Ln.js +214 -0
  88. package/dist/environment-8wsKE2Ln.js.map +1 -0
  89. package/dist/eval-BNcvle_J.js +1595 -0
  90. package/dist/eval-BNcvle_J.js.map +1 -0
  91. package/dist/eval.d.ts +2 -2
  92. package/dist/eval.js +1 -1489
  93. package/dist/executor-Cx5-8yqi.js +621 -0
  94. package/dist/executor-Cx5-8yqi.js.map +1 -0
  95. package/dist/extension-authoring-DyGGmq9V.js +385 -0
  96. package/dist/extension-authoring-DyGGmq9V.js.map +1 -0
  97. package/dist/extensions.d.ts +2 -2
  98. package/dist/extensions.js +3 -3
  99. package/dist/{fetch-url-DX75gpL0.js → fetch-url-Ct2TjDWt.js} +4 -4
  100. package/dist/{fetch-url-DX75gpL0.js.map → fetch-url-Ct2TjDWt.js.map} +1 -1
  101. package/dist/{format-BF745pLL.js → format-C2NQEVUH.js} +39 -2
  102. package/dist/format-C2NQEVUH.js.map +1 -0
  103. package/dist/format-bytes-C7tfc3Zm.js +55 -0
  104. package/dist/format-bytes-C7tfc3Zm.js.map +1 -0
  105. package/dist/headless-C_rNUuYC.js +960 -0
  106. package/dist/headless-C_rNUuYC.js.map +1 -0
  107. package/dist/headless.d.ts +1 -1
  108. package/dist/headless.js +1 -413
  109. package/dist/{history-search-C4bk1Wz_.js → history-search-CcYzF8-0.js} +7 -3
  110. package/dist/history-search-CcYzF8-0.js.map +1 -0
  111. package/dist/history-search-worker.d.ts +1 -1
  112. package/dist/history-search-worker.js +1 -1
  113. package/dist/host-D7NrI03V.js +378 -0
  114. package/dist/host-D7NrI03V.js.map +1 -0
  115. package/dist/host-signals-BcP5QKUD.js +118 -0
  116. package/dist/host-signals-BcP5QKUD.js.map +1 -0
  117. package/dist/identity-CwfO8K-t.js +26 -0
  118. package/dist/identity-CwfO8K-t.js.map +1 -0
  119. package/dist/{index-BgN1T3lk.d.ts → index-BGe1fQT7.d.ts} +10987 -9320
  120. package/dist/index-BGe1fQT7.d.ts.map +1 -0
  121. package/dist/index-BVQsIKGn.d.ts +448 -0
  122. package/dist/index-BVQsIKGn.d.ts.map +1 -0
  123. package/dist/{index-C6NEd5y_.d.ts → index-CHABJd-L.d.ts} +3386 -502
  124. package/dist/index-CHABJd-L.d.ts.map +1 -0
  125. package/dist/{index-C37_ppWv.d.ts → index-D6a7qXpg.d.ts} +2 -3
  126. package/dist/index-D6a7qXpg.d.ts.map +1 -0
  127. package/dist/index.d.ts +6 -6
  128. package/dist/index.js +27 -23
  129. package/dist/{completion-core-BRo86R_L.js → inline-ghost-BVRQeGoL.js} +50 -2
  130. package/dist/inline-ghost-BVRQeGoL.js.map +1 -0
  131. package/dist/ipc/remote.d.ts +313 -0
  132. package/dist/ipc/remote.d.ts.map +1 -0
  133. package/dist/ipc/remote.js +4 -0
  134. package/dist/ipc.d.ts +6 -964
  135. package/dist/ipc.js +403 -4
  136. package/dist/ipc.js.map +1 -0
  137. package/dist/{isolation-Kfoof0MM.d.ts → isolation-D9L650W5.d.ts} +100 -15
  138. package/dist/isolation-D9L650W5.d.ts.map +1 -0
  139. package/dist/json-rpc--HXQti1E.js +350 -0
  140. package/dist/json-rpc--HXQti1E.js.map +1 -0
  141. package/dist/links-j8rED1sR.js +603 -0
  142. package/dist/links-j8rED1sR.js.map +1 -0
  143. package/dist/local-terminal-D8QThwo_.js +252 -0
  144. package/dist/local-terminal-D8QThwo_.js.map +1 -0
  145. package/dist/{logger--C1VQjwJ.js → logger-Gtqlayx8.js} +199 -173
  146. package/dist/logger-Gtqlayx8.js.map +1 -0
  147. package/dist/logs-view-CWG8aUAG.js.map +1 -1
  148. package/dist/{mcp-CgNd-f3F.js → mcp-_wecH9Qe.js} +608 -562
  149. package/dist/mcp-_wecH9Qe.js.map +1 -0
  150. package/dist/mcp.d.ts +2 -2
  151. package/dist/mcp.js +2 -2
  152. package/dist/media-sniff-UKijEaiQ.js.map +1 -1
  153. package/dist/{messages-2jcOA_5R.js → messages-BqiwcD2Q.js} +1017 -1014
  154. package/dist/messages-BqiwcD2Q.js.map +1 -0
  155. package/dist/{oauth-DxHO17JE.js → oauth-Px_pBB9W.js} +5 -5
  156. package/dist/{oauth-DxHO17JE.js.map → oauth-Px_pBB9W.js.map} +1 -1
  157. package/dist/{openai-compat-Dy56weK8.js → openai-compat-CFrpH7uq.js} +432 -589
  158. package/dist/openai-compat-CFrpH7uq.js.map +1 -0
  159. package/dist/orchestration-BCGmB8Ps.js +511 -0
  160. package/dist/orchestration-BCGmB8Ps.js.map +1 -0
  161. package/dist/output/stream-json.d.ts +1 -2
  162. package/dist/output/stream-json.d.ts.map +1 -1
  163. package/dist/output/stream-json.js +1 -1
  164. package/dist/output/terminal.d.ts +1 -2
  165. package/dist/output/terminal.d.ts.map +1 -1
  166. package/dist/output/terminal.js +13 -7
  167. package/dist/output/terminal.js.map +1 -1
  168. package/dist/{plugins-gbI7SBA6.js → plugins-DS7mahzZ.js} +20 -101
  169. package/dist/plugins-DS7mahzZ.js.map +1 -0
  170. package/dist/plugins.d.ts +1 -1
  171. package/dist/plugins.js +1 -2
  172. package/dist/prelude-Cxo4t74B.js +517 -0
  173. package/dist/prelude-Cxo4t74B.js.map +1 -0
  174. package/dist/presets.d.ts +1 -1
  175. package/dist/presets.js +1 -2
  176. package/dist/project-root-B8zADr4o.js +167 -0
  177. package/dist/project-root-B8zADr4o.js.map +1 -0
  178. package/dist/project-user-paths-BSgtrRxl.js +58 -0
  179. package/dist/project-user-paths-BSgtrRxl.js.map +1 -0
  180. package/dist/{prompts-Pqc3JdW_.d.ts → prompts-DYcvqShf.d.ts} +14 -11
  181. package/dist/prompts-DYcvqShf.d.ts.map +1 -0
  182. package/dist/protocol-DnhqqSmE.js +13 -0
  183. package/dist/protocol-DnhqqSmE.js.map +1 -0
  184. package/dist/providers/anthropic.d.ts +2 -2
  185. package/dist/providers/anthropic.js +1 -2
  186. package/dist/providers/arcee.d.ts +1 -1
  187. package/dist/providers/arcee.js +1 -1
  188. package/dist/providers/baseten.d.ts +1 -1
  189. package/dist/providers/baseten.js +1 -1
  190. package/dist/providers/cerebras.d.ts +1 -1
  191. package/dist/providers/cerebras.js +3 -2
  192. package/dist/providers/cerebras.js.map +1 -1
  193. package/dist/providers/local.d.ts +1 -1
  194. package/dist/providers/local.js +1 -1
  195. package/dist/providers/openai-compat.d.ts +1 -1
  196. package/dist/providers/openai-compat.js +1 -2
  197. package/dist/providers/openai.d.ts +1 -1
  198. package/dist/providers/openai.js +15 -12
  199. package/dist/providers/openai.js.map +1 -1
  200. package/dist/providers/openrouter.d.ts +1 -1
  201. package/dist/providers/openrouter.js +3 -2
  202. package/dist/providers/openrouter.js.map +1 -1
  203. package/dist/providers/xai.d.ts +1 -1
  204. package/dist/providers/xai.js +3 -3
  205. package/dist/{providers-BVhnFyiY.js → providers-XUR7F4Hi.js} +4 -4
  206. package/dist/{providers-BVhnFyiY.js.map → providers-XUR7F4Hi.js.map} +1 -1
  207. package/dist/providers.d.ts +1 -1
  208. package/dist/providers.js +4 -4
  209. package/dist/registry-D6ShBWJU.js +5234 -0
  210. package/dist/registry-D6ShBWJU.js.map +1 -0
  211. package/dist/remote-hosts-BtA_9ZGp.js +97 -0
  212. package/dist/remote-hosts-BtA_9ZGp.js.map +1 -0
  213. package/dist/restate.d.ts +2 -3
  214. package/dist/restate.d.ts.map +1 -1
  215. package/dist/restate.js +631 -572
  216. package/dist/restate.js.map +1 -1
  217. package/dist/run-summary-CklLiZ4y.js +288 -0
  218. package/dist/run-summary-CklLiZ4y.js.map +1 -0
  219. package/dist/{sandbox-BH0WQkXn.d.ts → sandbox-C5dR5DwQ.d.ts} +6 -3
  220. package/dist/sandbox-C5dR5DwQ.d.ts.map +1 -0
  221. package/dist/session/sqlite.d.ts +1 -2
  222. package/dist/session/sqlite.d.ts.map +1 -1
  223. package/dist/session/sqlite.js +1 -616
  224. package/dist/session-factory-BUGY5P40.js +1576 -0
  225. package/dist/session-factory-BUGY5P40.js.map +1 -0
  226. package/dist/{session-BqRP1hS7.js → session-xh9JXu6i.js} +94 -52
  227. package/dist/session-xh9JXu6i.js.map +1 -0
  228. package/dist/session.d.ts +1 -1
  229. package/dist/session.js +2 -2
  230. package/dist/settings-keys-Ckf29NeM.js +677 -0
  231. package/dist/settings-keys-Ckf29NeM.js.map +1 -0
  232. package/dist/shell-path-Dqaoow2J.js +412 -0
  233. package/dist/shell-path-Dqaoow2J.js.map +1 -0
  234. package/dist/{skills-BC3dodWp.js → skills-DKqZJm4X.js} +430 -470
  235. package/dist/skills-DKqZJm4X.js.map +1 -0
  236. package/dist/skills.d.ts +2 -2
  237. package/dist/skills.js +1 -2
  238. package/dist/source-mPExaUm8.js +381 -0
  239. package/dist/source-mPExaUm8.js.map +1 -0
  240. package/dist/sqlite-DV1DQzN2.js +698 -0
  241. package/dist/sqlite-DV1DQzN2.js.map +1 -0
  242. package/dist/{src-CkNQKFKr.js → src-BRMYRJib.js} +903 -1121
  243. package/dist/src-BRMYRJib.js.map +1 -0
  244. package/dist/{stdio-DPpBDPx5.js → stdio-C6YyoW3I.js} +4 -4
  245. package/dist/{stdio-DPpBDPx5.js.map → stdio-C6YyoW3I.js.map} +1 -1
  246. package/dist/{stdio-loader-Bbx19dMZ.js → stdio-loader-C830Vg-Z.js} +4 -4
  247. package/dist/{stdio-loader-Bbx19dMZ.js.map → stdio-loader-C830Vg-Z.js.map} +1 -1
  248. package/dist/system-prompt-MNVHatSD.d.ts.map +1 -1
  249. package/dist/timeout-DEaqslLO.d.ts.map +1 -1
  250. package/dist/todo-edits-Dn251YUP.js +1790 -0
  251. package/dist/todo-edits-Dn251YUP.js.map +1 -0
  252. package/dist/{turn-operations-DrbJlpq9.js → tool-formatters-IQFDrdrs.js} +1456 -2120
  253. package/dist/tool-formatters-IQFDrdrs.js.map +1 -0
  254. package/dist/tool-state-Dku6YqAB.js +989 -0
  255. package/dist/tool-state-Dku6YqAB.js.map +1 -0
  256. package/dist/tools/fetch-url.d.ts +1 -2
  257. package/dist/tools/fetch-url.d.ts.map +1 -1
  258. package/dist/tools/fetch-url.js +1 -2
  259. package/dist/tools/prompts.d.ts +1 -1
  260. package/dist/tools/prompts.js +7 -7
  261. package/dist/tools/prompts.js.map +1 -1
  262. package/dist/tools/web-search.d.ts +1 -2
  263. package/dist/tools/web-search.d.ts.map +1 -1
  264. package/dist/tools/web-search.js +2 -2
  265. package/dist/tools/web-search.js.map +1 -1
  266. package/dist/tools-_DnT3AGM.js +578 -0
  267. package/dist/tools-_DnT3AGM.js.map +1 -0
  268. package/dist/tools.d.ts +3 -3
  269. package/dist/tools.js +4 -2
  270. package/dist/tui.d.ts +534 -517
  271. package/dist/tui.d.ts.map +1 -1
  272. package/dist/tui.js +34933 -27243
  273. package/dist/tui.js.map +1 -1
  274. package/dist/turn-operations-B8sokwi5.js +333 -0
  275. package/dist/turn-operations-B8sokwi5.js.map +1 -0
  276. package/dist/turn-operations-DQX5ZZni.d.ts +3089 -0
  277. package/dist/turn-operations-DQX5ZZni.d.ts.map +1 -0
  278. package/dist/types-C7ZFOztE.d.ts +132 -0
  279. package/dist/types-C7ZFOztE.d.ts.map +1 -0
  280. package/dist/types-CH5XpIHw.js +114 -0
  281. package/dist/types-CH5XpIHw.js.map +1 -0
  282. package/dist/{types-CWgENVLY.js → types-Cu0ZGDu9.js} +10 -6
  283. package/dist/types-Cu0ZGDu9.js.map +1 -0
  284. package/dist/types-IqegbJEE.d.ts +624 -0
  285. package/dist/types-IqegbJEE.d.ts.map +1 -0
  286. package/dist/types.d.ts +4 -4
  287. package/dist/types.js +1 -1
  288. package/dist/url-D8HCl65b.js +1259 -0
  289. package/dist/url-D8HCl65b.js.map +1 -0
  290. package/dist/wasm-BVT-j5cl.js +33 -0
  291. package/dist/wasm-BVT-j5cl.js.map +1 -0
  292. package/dist/workspace-exec-stream-SV2R9d5S.js +355 -0
  293. package/dist/workspace-exec-stream-SV2R9d5S.js.map +1 -0
  294. package/dist/ws-CIHMvlSh.js +952 -0
  295. package/dist/ws-CIHMvlSh.js.map +1 -0
  296. package/dist/ws-client-N7NxzvQp.js +230 -0
  297. package/dist/ws-client-N7NxzvQp.js.map +1 -0
  298. package/dist/{xai-CazjStOK.js → xai-CvJTeLrI.js} +165 -5
  299. package/dist/xai-CvJTeLrI.js.map +1 -0
  300. package/dist/xdg-zweed0-t.js +117 -0
  301. package/dist/xdg-zweed0-t.js.map +1 -0
  302. package/docs/ACP.md +52 -0
  303. package/docs/ARCHITECTURE.md +103 -6
  304. package/docs/ARTIFACTS.md +8 -4
  305. package/docs/CHAT.md +165 -14
  306. package/docs/EXECUTION_CONTEXT.md +8 -0
  307. package/docs/EXTENSIONS.md +123 -2
  308. package/docs/HEADLESS.md +2 -0
  309. package/docs/IPC.md +775 -64
  310. package/docs/MACHINES.md +456 -0
  311. package/docs/PANELS.md +3 -0
  312. package/docs/README.md +4 -0
  313. package/docs/RESTATE.md +3 -2
  314. package/docs/RUN_IN_BACKGROUND.md +10 -2
  315. package/docs/SERVER.md +1085 -0
  316. package/docs/SKILL.md +6 -1
  317. package/docs/TERMINAL.md +75 -0
  318. package/docs/TUI.md +65 -14
  319. package/package.json +58 -26
  320. package/scripts/eval.ts +4 -0
  321. package/dist/acp-D-tVyUjw.js.map +0 -1
  322. package/dist/agent-D0zZnGbt.js.map +0 -1
  323. package/dist/anthropic-C2aole0G.js.map +0 -1
  324. package/dist/approvals-DKaJZYlm.js.map +0 -1
  325. package/dist/atomic-write-B7zr1ddF.js.map +0 -1
  326. package/dist/auth-BG2rVKSt.js.map +0 -1
  327. package/dist/completion-core-BRo86R_L.js.map +0 -1
  328. package/dist/contexts/daytona.js.map +0 -1
  329. package/dist/contexts/docker.js.map +0 -1
  330. package/dist/contexts/e2b.js.map +0 -1
  331. package/dist/contexts-CRE9pw07.js.map +0 -1
  332. package/dist/eval.js.map +0 -1
  333. package/dist/format-BF745pLL.js.map +0 -1
  334. package/dist/glob-DluQFSw1.js +0 -270
  335. package/dist/glob-DluQFSw1.js.map +0 -1
  336. package/dist/headless.js.map +0 -1
  337. package/dist/history-search-C4bk1Wz_.js.map +0 -1
  338. package/dist/index-BgN1T3lk.d.ts.map +0 -1
  339. package/dist/index-C37_ppWv.d.ts.map +0 -1
  340. package/dist/index-C6NEd5y_.d.ts.map +0 -1
  341. package/dist/ipc-BKVIIOqH.js +0 -331
  342. package/dist/ipc-BKVIIOqH.js.map +0 -1
  343. package/dist/ipc.d.ts.map +0 -1
  344. package/dist/isolation-Kfoof0MM.d.ts.map +0 -1
  345. package/dist/json-rpc-rSWMUh9b.js +0 -192
  346. package/dist/json-rpc-rSWMUh9b.js.map +0 -1
  347. package/dist/logger--C1VQjwJ.js.map +0 -1
  348. package/dist/mcp-CgNd-f3F.js.map +0 -1
  349. package/dist/messages-2jcOA_5R.js.map +0 -1
  350. package/dist/openai-compat-Dy56weK8.js.map +0 -1
  351. package/dist/output-cap-C9zukcCj.js +0 -100
  352. package/dist/output-cap-C9zukcCj.js.map +0 -1
  353. package/dist/panels-B6gRk4bf.js +0 -789
  354. package/dist/panels-B6gRk4bf.js.map +0 -1
  355. package/dist/plugins-gbI7SBA6.js.map +0 -1
  356. package/dist/prompts-Pqc3JdW_.d.ts.map +0 -1
  357. package/dist/run-summary-BU_NgwUT.js +0 -269
  358. package/dist/run-summary-BU_NgwUT.js.map +0 -1
  359. package/dist/sandbox-BH0WQkXn.d.ts.map +0 -1
  360. package/dist/session/sqlite.js.map +0 -1
  361. package/dist/session-BqRP1hS7.js.map +0 -1
  362. package/dist/shell-path-DfdXrGg9.js +0 -1549
  363. package/dist/shell-path-DfdXrGg9.js.map +0 -1
  364. package/dist/skills-BC3dodWp.js.map +0 -1
  365. package/dist/src-CkNQKFKr.js.map +0 -1
  366. package/dist/todo-edits-UOwgxGKu.js +0 -528
  367. package/dist/todo-edits-UOwgxGKu.js.map +0 -1
  368. package/dist/tool-formatters-DoRLnfuD.d.ts +0 -759
  369. package/dist/tool-formatters-DoRLnfuD.d.ts.map +0 -1
  370. package/dist/transcript-anchors-BeudMbXx.d.ts +0 -1762
  371. package/dist/transcript-anchors-BeudMbXx.d.ts.map +0 -1
  372. package/dist/turn-operations-C8bMBDl_.d.ts +0 -1258
  373. package/dist/turn-operations-C8bMBDl_.d.ts.map +0 -1
  374. package/dist/turn-operations-DrbJlpq9.js.map +0 -1
  375. package/dist/types-CWgENVLY.js.map +0 -1
  376. package/dist/xai-CazjStOK.js.map +0 -1
@@ -130,6 +130,9 @@ Three namespaces:
130
130
  | `registerPanel({ id, label, icon?, load, subscribe?, onAction? })` | A tab in the side panel (TUI rail / GUI side panel) fed by declarative, JSON-safe content | Renderer-agnostic: the same registration paints in both hosts. See [PANELS.md](./PANELS.md) |
131
131
  | `registerArtifactKind({ kind, label, detect?, validateMeta?, render?, resolve? })` | Give meaning to a session artifact kind | Global namespace, first registration wins. See [ARTIFACTS.md](./ARTIFACTS.md) |
132
132
  | `artifacts.list(query)` / `artifacts.find(kind, uri)` / `artifacts.record(input)` | Read the artifact store; record one from host-side code (a `/` command that ran `gh pr create`) | Late-bound like `sessions`: reads `[]`, `record` `undefined`, when detached. See [ARTIFACTS.md](./ARTIFACTS.md) |
133
+ | `registerReferences({ id, patterns, surfaces?, resolve })` | Badges for things named in text without a trigger: ticket ids, issue URLs | Patterns are declarative (RegExp source + key template) so every host matches the same way; only a key `resolve` answers paints. See [Text references](#text-references) |
134
+ | `registerBadgeActions({ id, match?, actions, run })` | Right-click items on badges (links, files, commits, PRs, references, session badges), after the built-in copy / add to prompt / open | `run` answers effects (`copy` / `insert` / `open` / `notice`) the host applies. See [Badge actions](#badge-actions) |
135
+ | `mcp?.servers()` / `mcp?.callTool(server, tool, args)` | The user's enabled MCP servers, and calls into their tools outside agent runs (same stored OAuth logins) | Present only with the `'mcp:call'` permission on an enabled extension. See [MCP access](#mcp-access) |
133
136
  | `registerRunTransform(fn)` | Rewrite `agent.run()` options before precondition checks | Synchronous, applied in extension order; throws logged under `ZIDANE_DEBUG` and ignored |
134
137
  | `registerBehaviorTransform(fn)` | Rewrite resolved behavior (`maxTurns`, retry, budgets) | Run-level `behavior` options re-applied after, so explicit caller choices win |
135
138
  | `registerProviderMiddleware(fn)` | Wrap provider instances (tracing, fallback, metrics, policy) | Runs per provider-factory call; `undefined` return = pass-through |
@@ -143,6 +146,8 @@ Three namespaces:
143
146
  | `registerConfigCategory(category)` / `registerConfigItem(categoryId?, item)` | Typed settings in `Settings → Extensions` | See [Settings UI](#settings-ui) |
144
147
  | `bus?.emit(payload, opts)` / `bus?.onMessage(fn)` | Private cross-window message channel | Present only when the definition declares the `'ipc'` permission; payloads are JSON ≤ 64 KiB |
145
148
 
149
+ Two permissions are enforced rather than descriptive: `'ipc'` (`ctx.bus`) and `'mcp:call'` (`ctx.mcp`). Without them the surface is `undefined`.
150
+
146
151
  ### TUI-specific
147
152
 
148
153
  ```ts
@@ -242,6 +247,8 @@ const size = await ctx.workspace.fileSize('big.log') // probe before whole-rea
242
247
  if (await ctx.workspace.available()) { /* … */ } // detached ⇒ calls above REJECT, not no-op
243
248
  ```
244
249
 
250
+ Relative paths resolve against the session's workspace root; absolute paths are used as given. Containment is the execution context's own: a sandbox confines calls to its workspace, the local process context doesn't. With the TUI on the daemon runtime, window-side code (keybindings, palette actions, modals) reaches the same workspace through the host (`sessions.workspace*`), so the calls behave the same in both modes. One difference: an exec `signal` can't cross the socket, so aborting rejects the call at once while the command on the host runs until its own `timeout`.
251
+
245
252
  `/reload` (built-in command) hot-reloads the registry: re-discover, re-import each extension's module graph fresh, re-run `setup`, swap — outgoing teardowns run and the outgoing HUD paint is wiped. Toggling an extension off in Settings hides its paint and mutes notifications immediately; toggling back on restores them.
246
253
 
247
254
  `onTrigger` receives `{ extensionName, openModal(id), closeModal() }`. Heavy work should hop to its own microtask; the dispatcher is synchronous.
@@ -261,7 +268,7 @@ Extension bindings appear in `Settings → Keybindings` under a trailing **Exten
261
268
 
262
269
  ### GUI-specific
263
270
 
264
- There is no GUI-only registration surface. Panels are renderer-agnostic (`ctx.registerPanel`, see [PANELS.md](./PANELS.md)); `ctx.gui.registerPanel` is kept as a deprecated alias that forwards there. GUI parity wired today: extension discovery/settings, extension summaries, completion providers, completion submit hooks (`resolveReferences` / `onSubmit`), themes, and panels through IPC.
271
+ There is no GUI-only registration surface. Panels are renderer-agnostic (`ctx.registerPanel`, see [PANELS.md](./PANELS.md)); `ctx.gui.registerPanel` is kept as a deprecated alias that forwards there. GUI parity wired today: extension discovery/settings, extension summaries, completion providers, completion submit hooks (`resolveReferences` / `onSubmit`), themes, panels, text references, and artifact kinds (rows, refresh and session badges render with the registry of the project the artifact landed in) through IPC.
265
272
 
266
273
  ## How it boots
267
274
 
@@ -272,7 +279,7 @@ flowchart TD
272
279
  state["loadState(state.json)<br/>→ Settings.enabledExtensions"]
273
280
  build["buildExtensionRegistry<br/>(runs setup with disabled filter)"]
274
281
  config["resolveConfig<br/>(folds into ResolvedConfig)"]
275
- agent["buildAgent / createAgent<br/>(composePresets(extensionPreset, profile.preset))"]
282
+ agent["host buildActiveRun / createAgent<br/>(composePresets(extensionPreset, profile.preset))"]
276
283
 
277
284
  scan --> build
278
285
  inline --> build
@@ -345,6 +352,7 @@ owner/repo#main:packages/ext # search a subdirectory (monorepos); pasted tr
345
352
  Tahul/zidane:extensions/git-flow # /commit — agent-written commit messages + one-tap push
346
353
  Tahul/zidane:extensions/headroom # compress large tool outputs via a local Headroom proxy
347
354
  Tahul/zidane:extensions/pxpipe # image tool outputs in-process + optional pxpipe proxy routing
355
+ Tahul/zidane:extensions/linear # Linear tickets/projects as badges + chat artifacts, via your Linear MCP
348
356
  ```
349
357
 
350
358
  All mirror the packaging conventions to copy for your own extensions (`package.json` with `zidane-extension` keyword, entry `index.ts`, `zidane` as a peer).
@@ -477,6 +485,8 @@ ctx.registerCommand({
477
485
 
478
486
  `emit` output is display-only (persisted, never sent to the model). A command may also call `ctx.runAgent` for interactive sub-runs, `ctx.generateData` for silent schema-pinned JSON, `ctx.spawnAgents?` for parallel isolated child agents, and `ctx.appendContext?` to persist a model-visible note — the optional surfaces are host-dependent, so guard for bare hosts.
479
487
 
488
+ Builtin commands (`/help`, `/reload`) are reserved. An extension command with the same name is dropped. Extension commands beat markdown file commands (see [CHAT.md, Markdown commands and subagents](./CHAT.md#markdown-commands-and-subagents)).
489
+
480
490
  ### A completion provider
481
491
 
482
492
  ```ts
@@ -562,6 +572,117 @@ export default defineExtension({
562
572
  })
563
573
  ```
564
574
 
575
+ ### Session badges
576
+
577
+ A kind with `badge(artifacts)` gets a badge under the session's title: the GUI sidebar row (with a hover card) and the TUI sessions list. Commits and pull requests are built-in kinds on the same path.
578
+
579
+ ```ts
580
+ ctx.registerArtifactKind({
581
+ kind: 'acme.ticket',
582
+ label: 'Ticket',
583
+ badge: tickets => ({ // this session's artifacts of the kind, newest first
584
+ text: tickets[0]!.label,
585
+ ...(tickets.length > 1 ? { more: tickets.length - 1 } : { href: tickets[0]!.uri }), // ⌘ / ctrl-click opens it
586
+ icon: { gui: 'i-ph-ticket', tui: '◇' },
587
+ tone: 'warn', // muted | subtle | accent | success | warn | danger
588
+ order: 30, // pull requests 0, commits 10
589
+ panel: 'tickets', // what a click opens; default: the Artifacts panel
590
+ card: { title: 'Tickets', rows: tickets.map(t => ({ title: t.label, href: t.uri, uri: t.uri })) },
591
+ }),
592
+ })
593
+
594
+ ctx.registerPanel({
595
+ id: 'tickets',
596
+ label: 'Tickets',
597
+ load: async ({ focus }) => { // { kind, uri? }: what the click pointed at
598
+ const rows = await ctx.artifacts.list({ kind: 'acme.ticket' }) // the session the panel is for
599
+ return { sections: [{ id: 'all', items: rows.map(r => ({ kind: 'row', title: r.label, href: r.uri, ...(r.uri === focus?.uri ? { status: 'selected' } : {}) })) }] }
600
+ },
601
+ })
602
+ ```
603
+
604
+ **Clicks.** A click on a badge selects that chat and opens its `panel` (GUI side panel, TUI rail) with `PanelLoadContext.focus = { kind }`; a click on a card row adds the row's `uri`. ⌘-click (GUI) / ctrl-click (TUI) opens the badge's or row's `href` instead. `panel` is a bare id of a panel the same extension registered, a full `<extension>/<id>`, or `'artifacts'`; an id no active extension registered falls back to Artifacts, which brings the badge's kind (or the row) into view. Panel `load` / `onAction` run scoped to the panel's session, so `ctx.artifacts.list()` answers that chat's artifacts in both hosts.
605
+
606
+ JSON-safe and synchronous; a throw drops the badge, never the row. GUI icons are build-time UnoCSS classes: pick from `BADGE_ICONS` (`gui/src/renderer/src/components/ui/badge-tone.ts`), or the badge shows its text alone.
607
+
608
+ ### Text references
609
+
610
+ ```ts
611
+ ctx.registerReferences({
612
+ id: 'acme.ticket',
613
+ patterns: [
614
+ { regex: 'https://acme\\.dev/t/(\\d+)', key: '$1' }, // URL first: longest match wins at a position
615
+ { regex: '(?<![\\w-])ACME-\\d+(?![\\w-])' }, // key defaults to the whole match
616
+ ],
617
+ surfaces: ['prompt', 'assistant', 'title'], // default: all
618
+ resolve: async (key, { signal }) => {
619
+ const t = await fetchTicket(key, signal)
620
+ return t ? { label: t.id, status: t.state, title: t.title, href: t.url, tone: 'warn', icon: { gui: 'i-ph-ticket' } } : undefined
621
+ },
622
+ })
623
+ ```
624
+
625
+ Hosts match the patterns (the GUI renderer included, through `findReferences` in `zidane/chat/pure`), then ask `resolve` for each key; views are cached per `(provider, key)` (5 min, misses 1 min, throws not cached). A key that resolves to `undefined` stays plain text, so broad patterns are safe. GUI today: sent prompts, assistant markdown (prose and links whose whole URL matches; not code), sidebar titles. The TUI does not paint references yet.
626
+
627
+ A view's `prompt` is what the badge menu's **Add to prompt** inserts (default: the matched text).
628
+
629
+ ### Badge actions
630
+
631
+ Right-clicking a badge opens its actions: GUI chips in prompts and replies (links, files, branches, `#123` / SHA chips, extension references), sidebar badges and their card rows; TUI sessions-list badges and Artifacts rail rows (a small modal). Each badge describes what it stands for as a `BadgeTarget`:
632
+
633
+ ```ts
634
+ interface BadgeTarget {
635
+ kind: 'link' | 'file' | 'commit' | 'pull_request' | 'branch' | 'reference' | 'artifact'
636
+ text: string // what the badge shows
637
+ href?: string // URL, or absolute path for files
638
+ prompt?: string // what Add to prompt inserts
639
+ artifact?: { kind: string, uri: string } // session badges, card rows, artifact rows
640
+ reference?: { providerId: string, key: string } // `registerReferences` badges
641
+ sessionId?: string
642
+ }
643
+ ```
644
+
645
+ Built-ins come first and derive from the target alone: **Copy URL** (web `href`; **Copy path** for files), **Copy SHA** / **Copy** (no web link), **Add to prompt** (`prompt`, else the URL for links, `@path` for files, else `text`; the GUI inserts a file inside the chat's folder as a real mention), **Open in browser** (web `href`; **Open** for files). Feed them through `prompt` on reference views, session badges and card rows rather than overriding them.
646
+
647
+ Extensions add items after them:
648
+
649
+ ```ts
650
+ ctx.registerBadgeActions({
651
+ id: 'acme.tickets',
652
+ match: { kinds: ['reference', 'artifact'], references: ['acme.ticket'] }, // omitted axes match all
653
+ actions: target => target.reference ? [
654
+ { id: 'copy-id', label: 'Copy ID', group: 'copy', shortcut: 'I' }, // groups: copy, prompt, open, more
655
+ { id: 'details', label: 'Add details to prompt', group: 'prompt' },
656
+ ] : undefined,
657
+ run: async (actionId, target, { sessionId, cwd, signal }) =>
658
+ actionId === 'copy-id'
659
+ ? { copy: target.reference!.key, notice: 'Copied' }
660
+ : { insert: `> ${await fetchTitle(target.reference!.key, signal)}\n` },
661
+ })
662
+ ```
663
+
664
+ `actions` is synchronous and cheap (it runs on every right-click; the GUI asks main for it while the menu is already showing the built-ins). Items are ordered by group, stable within one; at most eight per registration; a shortcut already taken is dropped. `run` executes where the extension lives (GUI main, TUI in-process), scoped to the badge's chat (`ctx.artifacts`), with an 8 s deadline; a throw comes back as a `notice`. Effects are data: `copy` (clipboard), `insert` (the composer), `open` (a web URL or an absolute path), `notice` (a brief message; the GUI shows it by the pointer, the TUI keeps it in the debug log).
665
+
666
+ ### MCP access
667
+
668
+ ```ts
669
+ export default defineExtension({
670
+ name: 'tracker',
671
+ permissions: ['mcp:call'],
672
+ setup(ctx) {
673
+ ctx.registerReferences({ id: 'tracker.issue', patterns, resolve: async (key) => {
674
+ const server = (await ctx.mcp?.servers())?.find(s => s.url?.includes('mcp.linear.app'))
675
+ if (!server)
676
+ return undefined // not installed / not enabled: nothing paints
677
+ const { text, isError } = await ctx.mcp!.callTool(server.name, 'get_issue', { id: key })
678
+ return isError ? undefined : toView(JSON.parse(text))
679
+ } })
680
+ },
681
+ })
682
+ ```
683
+
684
+ `servers()` lists the `mcps.json` servers the user enabled for the extension's cwd (`{ name, transport, url?, command?, toolPrefix }`; match tool names in `detect` / hooks with `toolPrefix`). `callTool` uses the server's own tool name, connects on first use with the stored OAuth credentials (non-interactive: a server needing a login rejects), pools the connection per host and closes it after 60 s idle. It rejects when the server is missing, can't connect or lacks the tool, and resolves `{ isError: true }` when the call itself failed. `scope: 'context'` servers are not offered. Hosts pass `createExtensionMcpHost` (`zidane/chat`) as `mcp` to `discoverAndBuildExtensionRegistry`; the TUI, the daemon and the GUI main process do.
685
+
565
686
  ### A keybinding + modal
566
687
 
567
688
  ```tsx
package/docs/HEADLESS.md CHANGED
@@ -104,6 +104,8 @@ stderr.**
104
104
  **Exit codes:** `0` ok · `1` run error · `2` usage error · `124` timeout ·
105
105
  `130` aborted.
106
106
 
107
+ Subagents: the builtin `Explore` / `Plan` agents and markdown subagents from `~/.agents/agents` and `~/.zidane/agents` are available to `spawn`. Project agents (`<cwd>/.agents/agents`, `<cwd>/.zidane/agents`) are opt-in with `--project-agents`, because a headless run often targets a repo it did not write and an agent file sets a child's system prompt (its tools stay a subset of the parent's). Pass `--import-foreign-configs` to also load `.claude/agents`: the user-scope `~/.claude/agents` alone, plus the project `.claude/agents` when `--project-agents` is also set. Headless loads no settings, so the flags are the only opt-ins. Pass `--no-markdown-agents` to skip loading entirely: no builtin `Explore` / `Plan`, no file agents, and the `spawn` schema stays as it was before markdown agents existed. `print-tools` applies the same fold as a real run, so it honors all three flags. Load diagnostics print to stderr only when `ZIDANE_DEBUG` is set. Format and precedence: [CHAT.md, Markdown commands and subagents](./CHAT.md#markdown-commands-and-subagents).
108
+
107
109
  Run `bun run headless --help` for the full flag list.
108
110
 
109
111
  ## Reusable output helpers