zidane 5.12.10 → 5.13.1

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 (122) hide show
  1. package/README.md +17 -0
  2. package/dist/acp-CEE6C0m_.js +1313 -0
  3. package/dist/acp-CEE6C0m_.js.map +1 -0
  4. package/dist/acp-cli.d.ts +1 -0
  5. package/dist/acp-cli.js +575 -0
  6. package/dist/acp-cli.js.map +1 -0
  7. package/dist/acp.d.ts +616 -0
  8. package/dist/acp.d.ts.map +1 -0
  9. package/dist/acp.js +2 -0
  10. package/dist/{agent-DFxjgQx5.d.ts → agent-D7ZL8B2X.d.ts} +359 -50
  11. package/dist/agent-D7ZL8B2X.d.ts.map +1 -0
  12. package/dist/atomic-write-Bgtr5JPu.js +100 -0
  13. package/dist/atomic-write-Bgtr5JPu.js.map +1 -0
  14. package/dist/chat/pure.d.ts +3 -3
  15. package/dist/chat.d.ts +17 -117
  16. package/dist/chat.d.ts.map +1 -1
  17. package/dist/chat.js +3 -3
  18. package/dist/contexts/daytona.d.ts +3 -3
  19. package/dist/contexts/docker.d.ts +1 -1
  20. package/dist/contexts/docker.d.ts.map +1 -1
  21. package/dist/contexts/docker.js +4 -1
  22. package/dist/contexts/docker.js.map +1 -1
  23. package/dist/contexts/e2b.d.ts +2 -2
  24. package/dist/{contexts-DglWSzmR.js → contexts-DHi8LPCp.js} +51 -9
  25. package/dist/contexts-DHi8LPCp.js.map +1 -0
  26. package/dist/contexts.d.ts +3 -3
  27. package/dist/contexts.js +1 -1
  28. package/dist/eval.d.ts +1 -1
  29. package/dist/eval.js +4 -4
  30. package/dist/glob-DCWXy_tr.js +128 -0
  31. package/dist/glob-DCWXy_tr.js.map +1 -0
  32. package/dist/{headless-Cbknpgjo.js → headless-Bz1SpTB-.js} +7 -7
  33. package/dist/headless-Bz1SpTB-.js.map +1 -0
  34. package/dist/headless.d.ts +1 -1
  35. package/dist/headless.js +1 -1
  36. package/dist/{index-C3wPsOFw.d.ts → index-BsyPeCSL.d.ts} +3 -3
  37. package/dist/{index-C3wPsOFw.d.ts.map → index-BsyPeCSL.d.ts.map} +1 -1
  38. package/dist/{index-DoQ0MHlp.d.ts → index-CDcQW-2S.d.ts} +87 -19
  39. package/dist/index-CDcQW-2S.d.ts.map +1 -0
  40. package/dist/{index-CrMb8jCE.d.ts → index-CF15aqlk.d.ts} +3 -3
  41. package/dist/{index-CrMb8jCE.d.ts.map → index-CF15aqlk.d.ts.map} +1 -1
  42. package/dist/index.d.ts +8 -7
  43. package/dist/index.js +12 -12
  44. package/dist/{interpolate-Da6kPCXn.js → interpolate-ConAiXGy.js} +2 -2
  45. package/dist/{interpolate-Da6kPCXn.js.map → interpolate-ConAiXGy.js.map} +1 -1
  46. package/dist/lazy-DLOurOC_.js +20 -0
  47. package/dist/lazy-DLOurOC_.js.map +1 -0
  48. package/dist/{logger-DZcTJ3YX.d.ts → logger-DItaCwPw.d.ts} +2 -2
  49. package/dist/{logger-DZcTJ3YX.d.ts.map → logger-DItaCwPw.d.ts.map} +1 -1
  50. package/dist/login-D5rb4IG8.js +267 -0
  51. package/dist/login-D5rb4IG8.js.map +1 -0
  52. package/dist/{mcp-Bl0n3bNL.js → mcp-C_TIj91j.js} +2 -2
  53. package/dist/{mcp-Bl0n3bNL.js.map → mcp-C_TIj91j.js.map} +1 -1
  54. package/dist/mcp.d.ts +1 -1
  55. package/dist/mcp.js +1 -1
  56. package/dist/{messages-CV_K9I6j.js → messages-CGazSyTL.js} +16 -13
  57. package/dist/messages-CGazSyTL.js.map +1 -0
  58. package/dist/output/stream-json.d.ts +2 -2
  59. package/dist/output/stream-json.js +1 -1
  60. package/dist/output/terminal.d.ts +2 -2
  61. package/dist/policy-DcGlpaNs.d.ts +129 -0
  62. package/dist/policy-DcGlpaNs.d.ts.map +1 -0
  63. package/dist/{presets-BsMR5nn6.js → presets-5IGiSsxm.js} +2 -2
  64. package/dist/{presets-BsMR5nn6.js.map → presets-5IGiSsxm.js.map} +1 -1
  65. package/dist/presets.d.ts +2 -2
  66. package/dist/presets.js +1 -1
  67. package/dist/{providers-C6rpOk0l.js → providers-DMPAmUuY.js} +47 -122
  68. package/dist/providers-DMPAmUuY.js.map +1 -0
  69. package/dist/providers.d.ts +1 -1
  70. package/dist/providers.js +2 -2
  71. package/dist/restate.d.ts +2 -2
  72. package/dist/restate.js +2 -1
  73. package/dist/restate.js.map +1 -1
  74. package/dist/session/sqlite.d.ts +1 -1
  75. package/dist/{session-nRmW_P8d.js → session-B69BQSn1.js} +2 -2
  76. package/dist/{session-nRmW_P8d.js.map → session-B69BQSn1.js.map} +1 -1
  77. package/dist/session.d.ts +1 -1
  78. package/dist/session.js +2 -2
  79. package/dist/skills.d.ts +2 -2
  80. package/dist/skills.js +1 -1
  81. package/dist/{tool-formatters-CCTIq3A-.d.ts → tool-formatters-CNSMadtp.d.ts} +9 -31
  82. package/dist/tool-formatters-CNSMadtp.d.ts.map +1 -0
  83. package/dist/tools/fetch-url.d.ts +1 -1
  84. package/dist/tools/web-search.d.ts +1 -1
  85. package/dist/{tools-fqToqHik.js → tools-CfS7rjuh.js} +2139 -1371
  86. package/dist/tools-CfS7rjuh.js.map +1 -0
  87. package/dist/tools.d.ts +2 -2
  88. package/dist/tools.js +1 -1
  89. package/dist/{transcript-anchors-Br_NijUC.js → transcript-anchors-B_a1edre.js} +1204 -105
  90. package/dist/transcript-anchors-B_a1edre.js.map +1 -0
  91. package/dist/{transcript-anchors-DxAfqo4i.d.ts → transcript-anchors-EG-SmZRu.d.ts} +17 -5
  92. package/dist/transcript-anchors-EG-SmZRu.d.ts.map +1 -0
  93. package/dist/tui.d.ts +3 -3
  94. package/dist/tui.d.ts.map +1 -1
  95. package/dist/tui.js +102 -148
  96. package/dist/tui.js.map +1 -1
  97. package/dist/{turn-operations-BTxf15kt.d.ts → turn-operations-DwtWRYr1.d.ts} +3 -3
  98. package/dist/{turn-operations-BTxf15kt.d.ts.map → turn-operations-DwtWRYr1.d.ts.map} +1 -1
  99. package/dist/{types-B39tBba1.d.ts → types-Bs2oY7Ux.d.ts} +27 -4
  100. package/dist/types-Bs2oY7Ux.d.ts.map +1 -0
  101. package/dist/types-DxHDaqN7.js.map +1 -1
  102. package/dist/types.d.ts +4 -4
  103. package/dist/types.js +1 -1
  104. package/docs/ACP.md +153 -0
  105. package/docs/ARCHITECTURE.md +6 -2
  106. package/docs/CHAT.md +29 -28
  107. package/docs/SKILL.md +1 -1
  108. package/docs/TUI.md +8 -8
  109. package/package.json +15 -5
  110. package/dist/agent-DFxjgQx5.d.ts.map +0 -1
  111. package/dist/contexts-DglWSzmR.js.map +0 -1
  112. package/dist/headless-Cbknpgjo.js.map +0 -1
  113. package/dist/index-DoQ0MHlp.d.ts.map +0 -1
  114. package/dist/login-uf01y_Yj.js +0 -1272
  115. package/dist/login-uf01y_Yj.js.map +0 -1
  116. package/dist/messages-CV_K9I6j.js.map +0 -1
  117. package/dist/providers-C6rpOk0l.js.map +0 -1
  118. package/dist/tool-formatters-CCTIq3A-.d.ts.map +0 -1
  119. package/dist/tools-fqToqHik.js.map +0 -1
  120. package/dist/transcript-anchors-Br_NijUC.js.map +0 -1
  121. package/dist/transcript-anchors-DxAfqo4i.d.ts.map +0 -1
  122. package/dist/types-B39tBba1.d.ts.map +0 -1
package/README.md CHANGED
@@ -21,6 +21,7 @@ Everything below is in service of those:
21
21
  - 🧠 **Providers** — Anthropic, OpenAI Codex, OpenRouter, Cerebras, xAI Grok, Arcee, local LLMs, plus `openaiCompat` (Baseten, Fireworks, Groq). OAuth + API key with auto-refresh.
22
22
  - 🪝 **Hookable turn loop** — every text/thinking delta, tool call, MCP, session, skill, spawn, OAuth, validation, and budget event is observable and (mostly) mutable.
23
23
  - 🛠️ **First-class tools** — `shell`, `read_file`, `write_file`, `edit`, `multi_edit`, `glob`, `grep`, `spawn`, human-in-the-loop, plus any [MCP](https://modelcontextprotocol.io) server. Per-call gates, arg auto-coerce, hallucinated-tool fallback, error rewriting. Lazy MCP disclosure via `tool_search`. Optional `todowrite` / `todoread` for persistent task checkpointing across prompts.
24
+ - 🔌 **ACP v1 adapter** — run Zidane from ACP clients like Zed via `zidane-acp`, or embed the protocol server with `zidane/acp`.
24
25
  - 🧮 **Per-tool concurrency** — every `ToolDef` carries `isConcurrencySafe` (default `false`); the dispatcher fans safe siblings out in parallel and barriers unsafe ones. Order is preserved at yield time. Cap via `behavior.maxConcurrentTools`.
25
26
  - ✂️ **Token-aware** — paginated reads, tail-truncated `shell`, idempotent `write_file`; `outputBytes` everywhere. `toolOutputBudget`, `toolBudgets`, `thinkingDecay`.
26
27
  - 🗜️ **Context discipline** — `cache_control` breakpoints; server-side compaction on Anthropic, client-side `compactStrategy: 'tail'` elsewhere. Per-session read dedup + `requireReadBeforeEdit`; generalized `dedupTools`.
@@ -80,6 +81,8 @@ createAgent({
80
81
  compactStrategy: 'off', // 'off' | 'tail' (non-Anthropic compaction)
81
82
  compactThreshold: 131_072, // 128 KiB
82
83
  compactKeepTurns: 4,
84
+ mediaKeepTurns: undefined, // age old image/document base64 off the wire; chat profiles use 8
85
+ autoCompact: false, // loop-native LLM summary at N% of the window; chat profiles enable it
83
86
  toolDisclosure: 'eager', // 'eager' | 'lazy' (hide MCP schemas behind tool_search)
84
87
  toolSearch: { tool: true, limit: 20 },
85
88
  },
@@ -135,6 +138,16 @@ For `local` / `openai-compat`, `--base-url`, `--api-key-env`, `--headers-env`, `
135
138
 
136
139
  `bun start --restate` runs the same start flow through a local Restate endpoint for durable-execution demos and fixture testing. It starts the service, probes readiness, registers the deployment, invokes `zidane-start-agent`, and exposes `run` / `status` / `history` handlers. See [docs/RESTATE.md](./docs/RESTATE.md) for production wiring and the advanced ReState flags.
137
140
 
141
+ ## ACP
142
+
143
+ Zidane ships an opt-in [Agent Client Protocol](https://agentclientprotocol.com) v1 adapter for editors and IDEs. Install the package and point your ACP client at:
144
+
145
+ ```bash
146
+ zidane-acp --provider anthropic --model claude-sonnet-4-5
147
+ ```
148
+
149
+ For Zed config, stdio framing details, session persistence, and in-process usage via `zidane/acp`, see [docs/ACP.md](./docs/ACP.md).
150
+
138
151
  ## Providers
139
152
 
140
153
  All providers accept runtime credentials via params. Env vars are fallbacks.
@@ -355,6 +368,10 @@ agent.hooks.hook('context:transform', (ctx) => {
355
368
 
356
369
  `behavior.compactStrategy: 'tail'` elides older `tool_result` blocks once their combined size exceeds `compactThreshold` (default 128 KiB); the newest `compactKeepTurns` (default 4) stay intact. Anthropic users should prefer the server-side `context-management-2025-06-27` beta via `anthropic({ extraBetas, contextManagement })` — token-accurate.
357
370
 
371
+ `behavior.mediaKeepTurns` is separate: it ages old inline image/document base64 off the provider wire while keeping bytes in `session.turns`. Aged media becomes an `attachment://<hash>` marker that `read_file path="attachment://..."` can re-inline. SDK default is off; built-in chat profiles set it to `8`. Proactive age-out only runs when `read_file` is registered.
372
+
373
+ `behavior.autoCompact` is the heavy lever: loop-native auto-compaction. Once a turn's effective input crosses `threshold` (default `0.85`) of the context window, the loop runs a real LLM summary over the older turns, appends a `compact-summary` marker + file/skill restoration to the session, and continues — mid-run and at end-of-run. Window source is `autoCompact.contextWindow` → `provider.meta.contextWindow` (inert without one). Observe via the `compact:start` / `compact:end` hooks. SDK default off; chat profiles enable it. Distinct from `compactStrategy` (per-turn wire-only `tool_result` trim) and the always-on reactive `context_exceeded` recovery.
374
+
358
375
  ### Read dedup + read-before-edit guard
359
376
 
360
377
  - `behavior.dedupReads` (default **on**) — `read_file` returns `"unchanged since the previous read"` on identical re-reads. Per-session content-hash.