zidane 7.2.4 → 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.
- package/LICENSE +21 -0
- package/README.md +34 -6
- package/dist/{acp-D-tVyUjw.js → acp-DQDhi2dj.js} +230 -77
- package/dist/acp-DQDhi2dj.js.map +1 -0
- package/dist/acp-cli.d.ts +1 -1
- package/dist/acp-cli.js +9 -66
- package/dist/acp-cli.js.map +1 -1
- package/dist/acp.d.ts +10 -590
- package/dist/acp.d.ts.map +1 -1
- package/dist/acp.js +3 -3
- package/dist/{agent-D0zZnGbt.js → agent-DSLNmBp0.js} +14401 -13214
- package/dist/agent-DSLNmBp0.js.map +1 -0
- package/dist/agent.d.ts +1 -1
- package/dist/agent.js +3 -2
- package/dist/aliasing-lVFbm81n.js +217 -0
- package/dist/aliasing-lVFbm81n.js.map +1 -0
- package/dist/{anthropic-C2aole0G.js → anthropic-CD00LhUP.js} +1442 -1264
- package/dist/anthropic-CD00LhUP.js.map +1 -0
- package/dist/artifacts-CV2hUKnL.js.map +1 -1
- package/dist/{atomic-write-B7zr1ddF.js → atomic-write-Ijgf2Mhc.js} +13 -3
- package/dist/atomic-write-Ijgf2Mhc.js.map +1 -0
- package/dist/call-tool-dHlbGOIY.js +70 -0
- package/dist/call-tool-dHlbGOIY.js.map +1 -0
- package/dist/chat/pure.d.ts +372 -6
- package/dist/chat/pure.d.ts.map +1 -1
- package/dist/chat/pure.js +35 -244
- package/dist/chat/pure.js.map +1 -1
- package/dist/{approvals-DKaJZYlm.js → chat-JPJJ8uu5.js} +15879 -14631
- package/dist/chat-JPJJ8uu5.js.map +1 -0
- package/dist/chat.d.ts +4 -6
- package/dist/chat.js +23 -12
- package/dist/cli-shared-C-YCaglL.js +159 -0
- package/dist/cli-shared-C-YCaglL.js.map +1 -0
- package/dist/client-core-BQSyDALT.d.ts +2115 -0
- package/dist/client-core-BQSyDALT.d.ts.map +1 -0
- package/dist/codemode-worker.d.ts +1 -0
- package/dist/codemode-worker.js +155 -0
- package/dist/codemode-worker.js.map +1 -0
- package/dist/codemode.d.ts +352 -0
- package/dist/codemode.d.ts.map +1 -0
- package/dist/codemode.js +5 -0
- package/dist/connection-Dr-Js4yZ.d.ts +28 -0
- package/dist/connection-Dr-Js4yZ.d.ts.map +1 -0
- package/dist/connection-loop-gdh22LTI.js +112 -0
- package/dist/connection-loop-gdh22LTI.js.map +1 -0
- package/dist/context-segments-BHKlagL6.js +1016 -0
- package/dist/context-segments-BHKlagL6.js.map +1 -0
- package/dist/{context-transport-T_6AYIvy.js → context-transport-DSMTUsK1.js} +3 -3
- package/dist/{context-transport-T_6AYIvy.js.map → context-transport-DSMTUsK1.js.map} +1 -1
- package/dist/contexts/daytona.d.ts +19 -8
- package/dist/contexts/daytona.d.ts.map +1 -1
- package/dist/contexts/daytona.js +1 -440
- package/dist/contexts/docker.d.ts +36 -7
- package/dist/contexts/docker.d.ts.map +1 -1
- package/dist/contexts/docker.js +1 -456
- package/dist/contexts/e2b.d.ts +68 -13
- package/dist/contexts/e2b.d.ts.map +1 -1
- package/dist/contexts/e2b.js +1 -382
- package/dist/contexts/sandbox.d.ts +1 -1
- package/dist/contexts/sandbox.js +5 -0
- package/dist/contexts/sandbox.js.map +1 -1
- package/dist/{contexts-CRE9pw07.js → contexts-d7UolYot.js} +1059 -524
- package/dist/contexts-d7UolYot.js.map +1 -0
- package/dist/contexts.d.ts +3 -3
- package/dist/contexts.js +1 -1
- package/dist/cred-keys-GpBg71cP.js +105 -0
- package/dist/cred-keys-GpBg71cP.js.map +1 -0
- package/dist/{auth-BG2rVKSt.js → credentials-JttEuRON.js} +55 -206
- package/dist/credentials-JttEuRON.js.map +1 -0
- package/dist/{cursor-iojRXHF9.js → cursor-CdjaQTBW.js} +3 -3
- package/dist/{cursor-iojRXHF9.js.map → cursor-CdjaQTBW.js.map} +1 -1
- package/dist/daemon-cli.d.ts +1 -1
- package/dist/daemon-cli.js +3 -2
- package/dist/daemon-cli.js.map +1 -1
- package/dist/daytona-DG3omipZ.js +513 -0
- package/dist/daytona-DG3omipZ.js.map +1 -0
- package/dist/defaults-Cx3zvDOV.js +23 -0
- package/dist/defaults-Cx3zvDOV.js.map +1 -0
- package/dist/dispatcher-BMlu2BmZ.js +4941 -0
- package/dist/dispatcher-BMlu2BmZ.js.map +1 -0
- package/dist/docker-BZhMMJUp.js +727 -0
- package/dist/docker-BZhMMJUp.js.map +1 -0
- package/dist/e2b-CEVOdRib.js +480 -0
- package/dist/e2b-CEVOdRib.js.map +1 -0
- package/dist/edit-utils-EGosADZq.js +234 -0
- package/dist/edit-utils-EGosADZq.js.map +1 -0
- package/dist/environment-8wsKE2Ln.js +214 -0
- package/dist/environment-8wsKE2Ln.js.map +1 -0
- package/dist/eval-BNcvle_J.js +1595 -0
- package/dist/eval-BNcvle_J.js.map +1 -0
- package/dist/eval.d.ts +2 -2
- package/dist/eval.js +1 -1489
- package/dist/executor-Cx5-8yqi.js +621 -0
- package/dist/executor-Cx5-8yqi.js.map +1 -0
- package/dist/extension-authoring-DyGGmq9V.js +385 -0
- package/dist/extension-authoring-DyGGmq9V.js.map +1 -0
- package/dist/extensions.d.ts +2 -2
- package/dist/extensions.js +3 -3
- package/dist/{fetch-url-DX75gpL0.js → fetch-url-Ct2TjDWt.js} +4 -4
- package/dist/{fetch-url-DX75gpL0.js.map → fetch-url-Ct2TjDWt.js.map} +1 -1
- package/dist/{format-BF745pLL.js → format-C2NQEVUH.js} +39 -2
- package/dist/format-C2NQEVUH.js.map +1 -0
- package/dist/format-bytes-C7tfc3Zm.js +55 -0
- package/dist/format-bytes-C7tfc3Zm.js.map +1 -0
- package/dist/headless-C_rNUuYC.js +960 -0
- package/dist/headless-C_rNUuYC.js.map +1 -0
- package/dist/headless.d.ts +1 -1
- package/dist/headless.js +1 -413
- package/dist/{history-search-C4bk1Wz_.js → history-search-CcYzF8-0.js} +7 -3
- package/dist/history-search-CcYzF8-0.js.map +1 -0
- package/dist/history-search-worker.d.ts +1 -1
- package/dist/history-search-worker.js +1 -1
- package/dist/host-D7NrI03V.js +378 -0
- package/dist/host-D7NrI03V.js.map +1 -0
- package/dist/host-signals-BcP5QKUD.js +118 -0
- package/dist/host-signals-BcP5QKUD.js.map +1 -0
- package/dist/identity-CwfO8K-t.js +26 -0
- package/dist/identity-CwfO8K-t.js.map +1 -0
- package/dist/{index-BgN1T3lk.d.ts → index-BGe1fQT7.d.ts} +10987 -9320
- package/dist/index-BGe1fQT7.d.ts.map +1 -0
- package/dist/index-BVQsIKGn.d.ts +448 -0
- package/dist/index-BVQsIKGn.d.ts.map +1 -0
- package/dist/{index-C6NEd5y_.d.ts → index-CHABJd-L.d.ts} +3386 -502
- package/dist/index-CHABJd-L.d.ts.map +1 -0
- package/dist/{index-C37_ppWv.d.ts → index-D6a7qXpg.d.ts} +2 -3
- package/dist/index-D6a7qXpg.d.ts.map +1 -0
- package/dist/index.d.ts +6 -6
- package/dist/index.js +27 -23
- package/dist/{completion-core-BRo86R_L.js → inline-ghost-BVRQeGoL.js} +50 -2
- package/dist/inline-ghost-BVRQeGoL.js.map +1 -0
- package/dist/ipc/remote.d.ts +313 -0
- package/dist/ipc/remote.d.ts.map +1 -0
- package/dist/ipc/remote.js +4 -0
- package/dist/ipc.d.ts +6 -964
- package/dist/ipc.js +403 -4
- package/dist/ipc.js.map +1 -0
- package/dist/{isolation-Kfoof0MM.d.ts → isolation-D9L650W5.d.ts} +100 -15
- package/dist/isolation-D9L650W5.d.ts.map +1 -0
- package/dist/json-rpc--HXQti1E.js +350 -0
- package/dist/json-rpc--HXQti1E.js.map +1 -0
- package/dist/links-j8rED1sR.js +603 -0
- package/dist/links-j8rED1sR.js.map +1 -0
- package/dist/local-terminal-D8QThwo_.js +252 -0
- package/dist/local-terminal-D8QThwo_.js.map +1 -0
- package/dist/{logger--C1VQjwJ.js → logger-Gtqlayx8.js} +199 -173
- package/dist/logger-Gtqlayx8.js.map +1 -0
- package/dist/logs-view-CWG8aUAG.js.map +1 -1
- package/dist/{mcp-CgNd-f3F.js → mcp-_wecH9Qe.js} +608 -562
- package/dist/mcp-_wecH9Qe.js.map +1 -0
- package/dist/mcp.d.ts +2 -2
- package/dist/mcp.js +2 -2
- package/dist/media-sniff-UKijEaiQ.js.map +1 -1
- package/dist/{messages-2jcOA_5R.js → messages-BqiwcD2Q.js} +1017 -1014
- package/dist/messages-BqiwcD2Q.js.map +1 -0
- package/dist/{oauth-DxHO17JE.js → oauth-Px_pBB9W.js} +5 -5
- package/dist/{oauth-DxHO17JE.js.map → oauth-Px_pBB9W.js.map} +1 -1
- package/dist/{openai-compat-Dy56weK8.js → openai-compat-CFrpH7uq.js} +432 -589
- package/dist/openai-compat-CFrpH7uq.js.map +1 -0
- package/dist/orchestration-BCGmB8Ps.js +511 -0
- package/dist/orchestration-BCGmB8Ps.js.map +1 -0
- package/dist/output/stream-json.d.ts +1 -2
- package/dist/output/stream-json.d.ts.map +1 -1
- package/dist/output/stream-json.js +1 -1
- package/dist/output/terminal.d.ts +1 -2
- package/dist/output/terminal.d.ts.map +1 -1
- package/dist/output/terminal.js +13 -7
- package/dist/output/terminal.js.map +1 -1
- package/dist/{plugins-gbI7SBA6.js → plugins-DS7mahzZ.js} +20 -101
- package/dist/plugins-DS7mahzZ.js.map +1 -0
- package/dist/plugins.d.ts +1 -1
- package/dist/plugins.js +1 -2
- package/dist/prelude-Cxo4t74B.js +517 -0
- package/dist/prelude-Cxo4t74B.js.map +1 -0
- package/dist/presets.d.ts +1 -1
- package/dist/presets.js +1 -2
- package/dist/project-root-B8zADr4o.js +167 -0
- package/dist/project-root-B8zADr4o.js.map +1 -0
- package/dist/project-user-paths-BSgtrRxl.js +58 -0
- package/dist/project-user-paths-BSgtrRxl.js.map +1 -0
- package/dist/{prompts-Pqc3JdW_.d.ts → prompts-DYcvqShf.d.ts} +14 -11
- package/dist/prompts-DYcvqShf.d.ts.map +1 -0
- package/dist/protocol-DnhqqSmE.js +13 -0
- package/dist/protocol-DnhqqSmE.js.map +1 -0
- package/dist/providers/anthropic.d.ts +2 -2
- package/dist/providers/anthropic.js +1 -2
- package/dist/providers/arcee.d.ts +1 -1
- package/dist/providers/arcee.js +1 -1
- package/dist/providers/baseten.d.ts +1 -1
- package/dist/providers/baseten.js +1 -1
- package/dist/providers/cerebras.d.ts +1 -1
- package/dist/providers/cerebras.js +3 -2
- package/dist/providers/cerebras.js.map +1 -1
- package/dist/providers/local.d.ts +1 -1
- package/dist/providers/local.js +1 -1
- package/dist/providers/openai-compat.d.ts +1 -1
- package/dist/providers/openai-compat.js +1 -2
- package/dist/providers/openai.d.ts +1 -1
- package/dist/providers/openai.js +15 -12
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/openrouter.d.ts +1 -1
- package/dist/providers/openrouter.js +3 -2
- package/dist/providers/openrouter.js.map +1 -1
- package/dist/providers/xai.d.ts +1 -1
- package/dist/providers/xai.js +3 -3
- package/dist/{providers-BVhnFyiY.js → providers-XUR7F4Hi.js} +4 -4
- package/dist/{providers-BVhnFyiY.js.map → providers-XUR7F4Hi.js.map} +1 -1
- package/dist/providers.d.ts +1 -1
- package/dist/providers.js +4 -4
- package/dist/registry-D6ShBWJU.js +5234 -0
- package/dist/registry-D6ShBWJU.js.map +1 -0
- package/dist/remote-hosts-BtA_9ZGp.js +97 -0
- package/dist/remote-hosts-BtA_9ZGp.js.map +1 -0
- package/dist/restate.d.ts +2 -3
- package/dist/restate.d.ts.map +1 -1
- package/dist/restate.js +631 -572
- package/dist/restate.js.map +1 -1
- package/dist/run-summary-CklLiZ4y.js +288 -0
- package/dist/run-summary-CklLiZ4y.js.map +1 -0
- package/dist/{sandbox-BH0WQkXn.d.ts → sandbox-C5dR5DwQ.d.ts} +6 -3
- package/dist/sandbox-C5dR5DwQ.d.ts.map +1 -0
- package/dist/session/sqlite.d.ts +1 -2
- package/dist/session/sqlite.d.ts.map +1 -1
- package/dist/session/sqlite.js +1 -616
- package/dist/session-factory-BUGY5P40.js +1576 -0
- package/dist/session-factory-BUGY5P40.js.map +1 -0
- package/dist/{session-BqRP1hS7.js → session-xh9JXu6i.js} +94 -52
- package/dist/session-xh9JXu6i.js.map +1 -0
- package/dist/session.d.ts +1 -1
- package/dist/session.js +2 -2
- package/dist/settings-keys-Ckf29NeM.js +677 -0
- package/dist/settings-keys-Ckf29NeM.js.map +1 -0
- package/dist/shell-path-Dqaoow2J.js +412 -0
- package/dist/shell-path-Dqaoow2J.js.map +1 -0
- package/dist/{skills-BC3dodWp.js → skills-DKqZJm4X.js} +430 -470
- package/dist/skills-DKqZJm4X.js.map +1 -0
- package/dist/skills.d.ts +2 -2
- package/dist/skills.js +1 -2
- package/dist/source-mPExaUm8.js +381 -0
- package/dist/source-mPExaUm8.js.map +1 -0
- package/dist/sqlite-DV1DQzN2.js +698 -0
- package/dist/sqlite-DV1DQzN2.js.map +1 -0
- package/dist/{src-CkNQKFKr.js → src-BRMYRJib.js} +903 -1121
- package/dist/src-BRMYRJib.js.map +1 -0
- package/dist/{stdio-DPpBDPx5.js → stdio-C6YyoW3I.js} +4 -4
- package/dist/{stdio-DPpBDPx5.js.map → stdio-C6YyoW3I.js.map} +1 -1
- package/dist/{stdio-loader-Bbx19dMZ.js → stdio-loader-C830Vg-Z.js} +4 -4
- package/dist/{stdio-loader-Bbx19dMZ.js.map → stdio-loader-C830Vg-Z.js.map} +1 -1
- package/dist/system-prompt-MNVHatSD.d.ts.map +1 -1
- package/dist/timeout-DEaqslLO.d.ts.map +1 -1
- package/dist/todo-edits-Dn251YUP.js +1790 -0
- package/dist/todo-edits-Dn251YUP.js.map +1 -0
- package/dist/{turn-operations-DrbJlpq9.js → tool-formatters-IQFDrdrs.js} +1456 -2120
- package/dist/tool-formatters-IQFDrdrs.js.map +1 -0
- package/dist/tool-state-Dku6YqAB.js +989 -0
- package/dist/tool-state-Dku6YqAB.js.map +1 -0
- package/dist/tools/fetch-url.d.ts +1 -2
- package/dist/tools/fetch-url.d.ts.map +1 -1
- package/dist/tools/fetch-url.js +1 -2
- package/dist/tools/prompts.d.ts +1 -1
- package/dist/tools/prompts.js +7 -7
- package/dist/tools/prompts.js.map +1 -1
- package/dist/tools/web-search.d.ts +1 -2
- package/dist/tools/web-search.d.ts.map +1 -1
- package/dist/tools/web-search.js +2 -2
- package/dist/tools/web-search.js.map +1 -1
- package/dist/tools-_DnT3AGM.js +578 -0
- package/dist/tools-_DnT3AGM.js.map +1 -0
- package/dist/tools.d.ts +3 -3
- package/dist/tools.js +4 -2
- package/dist/tui.d.ts +534 -517
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +34933 -27242
- package/dist/tui.js.map +1 -1
- package/dist/turn-operations-B8sokwi5.js +333 -0
- package/dist/turn-operations-B8sokwi5.js.map +1 -0
- package/dist/turn-operations-DQX5ZZni.d.ts +3089 -0
- package/dist/turn-operations-DQX5ZZni.d.ts.map +1 -0
- package/dist/types-C7ZFOztE.d.ts +132 -0
- package/dist/types-C7ZFOztE.d.ts.map +1 -0
- package/dist/types-CH5XpIHw.js +114 -0
- package/dist/types-CH5XpIHw.js.map +1 -0
- package/dist/{types-CWgENVLY.js → types-Cu0ZGDu9.js} +10 -6
- package/dist/types-Cu0ZGDu9.js.map +1 -0
- package/dist/types-IqegbJEE.d.ts +624 -0
- package/dist/types-IqegbJEE.d.ts.map +1 -0
- package/dist/types.d.ts +4 -4
- package/dist/types.js +1 -1
- package/dist/url-D8HCl65b.js +1259 -0
- package/dist/url-D8HCl65b.js.map +1 -0
- package/dist/wasm-BVT-j5cl.js +33 -0
- package/dist/wasm-BVT-j5cl.js.map +1 -0
- package/dist/workspace-exec-stream-SV2R9d5S.js +355 -0
- package/dist/workspace-exec-stream-SV2R9d5S.js.map +1 -0
- package/dist/ws-CIHMvlSh.js +952 -0
- package/dist/ws-CIHMvlSh.js.map +1 -0
- package/dist/ws-client-N7NxzvQp.js +230 -0
- package/dist/ws-client-N7NxzvQp.js.map +1 -0
- package/dist/{xai-CazjStOK.js → xai-CvJTeLrI.js} +165 -5
- package/dist/xai-CvJTeLrI.js.map +1 -0
- package/dist/xdg-zweed0-t.js +117 -0
- package/dist/xdg-zweed0-t.js.map +1 -0
- package/docs/ACP.md +52 -0
- package/docs/ARCHITECTURE.md +103 -6
- package/docs/ARTIFACTS.md +8 -4
- package/docs/CHAT.md +165 -14
- package/docs/EXECUTION_CONTEXT.md +8 -0
- package/docs/EXTENSIONS.md +123 -2
- package/docs/HEADLESS.md +2 -0
- package/docs/IPC.md +775 -64
- package/docs/MACHINES.md +456 -0
- package/docs/PANELS.md +3 -0
- package/docs/README.md +4 -0
- package/docs/RESTATE.md +3 -2
- package/docs/RUN_IN_BACKGROUND.md +10 -2
- package/docs/SERVER.md +1085 -0
- package/docs/SKILL.md +6 -1
- package/docs/TERMINAL.md +75 -0
- package/docs/TUI.md +65 -14
- package/package.json +58 -26
- package/scripts/eval.ts +4 -0
- package/dist/acp-D-tVyUjw.js.map +0 -1
- package/dist/agent-D0zZnGbt.js.map +0 -1
- package/dist/anthropic-C2aole0G.js.map +0 -1
- package/dist/approvals-DKaJZYlm.js.map +0 -1
- package/dist/atomic-write-B7zr1ddF.js.map +0 -1
- package/dist/auth-BG2rVKSt.js.map +0 -1
- package/dist/completion-core-BRo86R_L.js.map +0 -1
- package/dist/contexts/daytona.js.map +0 -1
- package/dist/contexts/docker.js.map +0 -1
- package/dist/contexts/e2b.js.map +0 -1
- package/dist/contexts-CRE9pw07.js.map +0 -1
- package/dist/eval.js.map +0 -1
- package/dist/format-BF745pLL.js.map +0 -1
- package/dist/glob-DluQFSw1.js +0 -270
- package/dist/glob-DluQFSw1.js.map +0 -1
- package/dist/headless.js.map +0 -1
- package/dist/history-search-C4bk1Wz_.js.map +0 -1
- package/dist/index-BgN1T3lk.d.ts.map +0 -1
- package/dist/index-C37_ppWv.d.ts.map +0 -1
- package/dist/index-C6NEd5y_.d.ts.map +0 -1
- package/dist/ipc-zVSyo6K1.js +0 -331
- package/dist/ipc-zVSyo6K1.js.map +0 -1
- package/dist/ipc.d.ts.map +0 -1
- package/dist/isolation-Kfoof0MM.d.ts.map +0 -1
- package/dist/json-rpc-rSWMUh9b.js +0 -192
- package/dist/json-rpc-rSWMUh9b.js.map +0 -1
- package/dist/logger--C1VQjwJ.js.map +0 -1
- package/dist/mcp-CgNd-f3F.js.map +0 -1
- package/dist/messages-2jcOA_5R.js.map +0 -1
- package/dist/openai-compat-Dy56weK8.js.map +0 -1
- package/dist/output-cap-C9zukcCj.js +0 -100
- package/dist/output-cap-C9zukcCj.js.map +0 -1
- package/dist/panels-B6gRk4bf.js +0 -789
- package/dist/panels-B6gRk4bf.js.map +0 -1
- package/dist/plugins-gbI7SBA6.js.map +0 -1
- package/dist/prompts-Pqc3JdW_.d.ts.map +0 -1
- package/dist/run-summary-BU_NgwUT.js +0 -269
- package/dist/run-summary-BU_NgwUT.js.map +0 -1
- package/dist/sandbox-BH0WQkXn.d.ts.map +0 -1
- package/dist/session/sqlite.js.map +0 -1
- package/dist/session-BqRP1hS7.js.map +0 -1
- package/dist/shell-path-h5czzllR.js +0 -1549
- package/dist/shell-path-h5czzllR.js.map +0 -1
- package/dist/skills-BC3dodWp.js.map +0 -1
- package/dist/src-CkNQKFKr.js.map +0 -1
- package/dist/todo-edits-UOwgxGKu.js +0 -528
- package/dist/todo-edits-UOwgxGKu.js.map +0 -1
- package/dist/tool-formatters-DoRLnfuD.d.ts +0 -759
- package/dist/tool-formatters-DoRLnfuD.d.ts.map +0 -1
- package/dist/transcript-anchors-BeudMbXx.d.ts +0 -1762
- package/dist/transcript-anchors-BeudMbXx.d.ts.map +0 -1
- package/dist/turn-operations-C8bMBDl_.d.ts +0 -1258
- package/dist/turn-operations-C8bMBDl_.d.ts.map +0 -1
- package/dist/turn-operations-DrbJlpq9.js.map +0 -1
- package/dist/types-CWgENVLY.js.map +0 -1
- package/dist/xai-CazjStOK.js.map +0 -1
package/docs/EXTENSIONS.md
CHANGED
|
@@ -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
|
|
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["
|
|
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
|