@heyditto/cli 3.12.0 → 3.14.0

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/README.md CHANGED
@@ -664,7 +664,7 @@ Options shared by both commands:
664
664
  | `--session <id>` | reuse a Ditto session id so traces land in an existing thread |
665
665
  | `--resume [id]` / `-c, --continue` | resume a local session (`heyditto sessions`) / the agent's most recent conversation. Claude also takes a Claude session id or title here, including sessions started in Claude Desktop or plain `claude`, and runs in the directory that session ran in; with no value, a terminal gets a searchable picker. Claude's own `-r` / `--resume` / `-c` after `--` do the same. |
666
666
  | `--yolo` / `--yellow` / `--plan` | bypass permissions / auto-accept edits / plan mode (Claude only) |
667
- | `--mcp` / `--no-mcp` | attach the endpoint's tools to Claude Code or Codex as its own MCP servers, or keep them on the router (default: the endpoint's `claude_tool_surface` / `codex_tool_surface`, else MCP) |
667
+ | `--mcp` / `--no-mcp` | attach the endpoint's tools to the agent as its own MCP servers, or keep them on the router (default: the endpoint's `<agent>_tool_surface`, e.g. `codex_tool_surface`, else MCP) |
668
668
  | `--no-hooks` | leave out the Claude Code hooks the repository's `.ditto` profile declares (`claude_hooks`); Claude only |
669
669
  | `-p, --prompt <text>` | headless run: `claude -p` or `codex exec` |
670
670
  | `-m, --model <id>` | model to request (default: the agent's own model id passes through and the endpoint routes it) |
@@ -727,6 +727,26 @@ How the wiring works:
727
727
  `prompt` (`--yolo` runs them unasked). Claude's `permissions.deny` rules are
728
728
  not applied to Codex. `--no-mcp` or `codex_tool_surface = "router"` keeps
729
729
  the tools on the router.
730
+ - **Grok** gets them as `[mcp_servers."<name>"]` tables in its launch
731
+ `GROK_HOME/config.toml` (`bearer_token_env_var = "DITTO_ROUTER_MCP_KEY"`),
732
+ plus `[permission]` rules: `allow` each Ditto server (`MCPTool(ditto__*)`)
733
+ and, under `client_approvals`, `ask` for each gated tool. Grok defers MCP
734
+ schemas behind its own `search_tool` / `use_tool`. The Ditto model entry
735
+ sends `X-Ditto-Tool-Surface: mcp`. `--no-mcp` or `grok_tool_surface =
736
+ "router"` keeps the router surface.
737
+ - **Cursor CLI** (`heyditto cursor`, runs `cursor-agent`) keeps inference on
738
+ your own Cursor account; Ditto supplies only the endpoint's tools. Cursor
739
+ has no per-launch MCP flag, so they go in a private per-launch plugin
740
+ (`--plugin-dir`, a `.cursor-plugin/plugin.json` plus `.mcp.json`) and
741
+ nothing is written to `~/.cursor`. The servers show up as
742
+ `plugin-ditto-<server>`, and the key is read from
743
+ `${env:DITTO_ROUTER_MCP_KEY}`. Cursor asks before each MCP call unless
744
+ `--yolo` (`--force`). A `-p` run adds no Cursor-wide flag of its
745
+ own: Cursor's `-p` edits and runs commands, but rejects every MCP call it
746
+ cannot ask about, so Ditto's tools need `--yolo` there (an explicit choice,
747
+ since `--force` also allows any command). An untrusted workspace needs
748
+ Cursor's own `--trust`. Remote control and
749
+ `--headless` are not available for Cursor yet.
730
750
 
731
751
  ### `codex-app`
732
752
 
@@ -133,7 +133,7 @@ export interface SettingsIO {
133
133
  * keeps reading its settings for as long as it runs. A dead owner's directory
134
134
  * is kept for a short grace period after its last write.
135
135
  */
136
- export declare function sweepStaleSettings(tmp: string, isAlive?: (pid: number) => boolean, now?: number): void;
136
+ export declare function sweepStaleSettings(tmp: string, isAlive?: (pid: number) => boolean, now?: number, prefix?: string): void;
137
137
  /**
138
138
  * A private copy of merged settings for the life of this process. A user's
139
139
  * settings file can hold secrets, so its contents never go into Claude's
@@ -178,9 +178,11 @@ export function mergeSettings(a, b) {
178
178
  const PRIVATE_SETTINGS_PREFIX = "ditto-claude-settings-";
179
179
  /** One private directory per temp root for the life of this process. */
180
180
  const privateSettingsDirs = new Map();
181
- /** The pid a settings directory belongs to: ditto-claude-settings-<pid>-<random>. */
182
- function ownerPid(name) {
183
- const m = /^ditto-claude-settings-(\d+)-/.exec(name);
181
+ /** The pid a private directory belongs to: <prefix><pid>-<random>. */
182
+ function ownerPid(name, prefix) {
183
+ if (!name.startsWith(prefix))
184
+ return undefined;
185
+ const m = /^(\d+)-/.exec(name.slice(prefix.length));
184
186
  return m ? Number(m[1]) : undefined;
185
187
  }
186
188
  function alive(pid) {
@@ -204,7 +206,7 @@ const STALE_SETTINGS_GRACE_MS = 5 * 60 * 1000;
204
206
  * keeps reading its settings for as long as it runs. A dead owner's directory
205
207
  * is kept for a short grace period after its last write.
206
208
  */
207
- export function sweepStaleSettings(tmp, isAlive = alive, now = Date.now()) {
209
+ export function sweepStaleSettings(tmp, isAlive = alive, now = Date.now(), prefix = PRIVATE_SETTINGS_PREFIX) {
208
210
  let entries;
209
211
  try {
210
212
  entries = readdirSync(tmp);
@@ -214,9 +216,7 @@ export function sweepStaleSettings(tmp, isAlive = alive, now = Date.now()) {
214
216
  }
215
217
  const uid = process.getuid?.();
216
218
  for (const name of entries) {
217
- if (!name.startsWith(PRIVATE_SETTINGS_PREFIX))
218
- continue;
219
- const pid = ownerPid(name);
219
+ const pid = ownerPid(name, prefix);
220
220
  if (pid === undefined || pid === process.pid || isAlive(pid))
221
221
  continue;
222
222
  const dir = path.join(tmp, name);
@@ -1 +1 @@
1
- {"version":3,"file":"claude-mcp.js","sourceRoot":"","sources":["../../src/agents/claude-mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACzH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD;;;;;;;;;;;;;;;;;GAiBG;AAEH,mFAAmF;AACnF,MAAM,CAAC,MAAM,mBAAmB,GAAG,sBAAsB,CAAC;AAC1D,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAEtC;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,sBAAsB,CAAC;AA0ClD,MAAM,mBAAmB,GAA2B;IAClD,mBAAmB,EAAE,4BAA4B;IACjD,WAAW,EAAE,gCAAgC;CAC9C,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAwC;IAC1E,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9E,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACvB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,MAAM,IAAI,mBAAmB,CAAC;QAC/D,MAAM,GAAG,GAAG,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,qBAAqB,CAAC;QACnE,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,0CAA0C,CAAC;QACvH,OAAO,GAAG,IAAI,qBAAqB,GAAG,8BAA8B,GAAG,EAAE,CAAC;IAC5E,CAAC,CAAC,CAAC;AACL,CAAC;AAwCD;;;;;GAKG;AACH,MAAM,gBAAgB,GAAG,kCAAkC,CAAC;AAE5D,+GAA+G;AAC/G,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC7C,OAAO,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC;AAC1D,CAAC;AAED,oGAAoG;AACpG,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAElC,mEAAmE;AACnE,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAe,EACf,MAAc,EACd,SAAiB,EACjB,YAA0B,KAAK,EAC/B,SAAS,GAAG,kBAAkB;IAE9B,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC;IACjD,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE;QAC/B,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,MAAM,EAAE,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,EAAE,kBAAkB,EAAE;QAC3G,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;KACvC,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAqC,CAAC;YACpE,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC;QACrC,CAAC;QAAC,MAAM,CAAC;YACP,gEAAgE;QAClE,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,OAAO,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAe,CAAC;IACjD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,OAAO,GAAG,sBAAsB,CAAC,CAAC;IACvF,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAmB,EAAE,SAAiB,EAAE,OAAgD,EAAE;IAC5H,MAAM,UAAU,GAA4B,EAAE,CAAC;IAC/C,MAAM,QAAQ,GAAwB,EAAE,CAAC;IACzC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACrC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QACxC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC1B,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,OAAO,GAA2B,EAAE,oBAAoB,EAAE,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC/J,UAAU,CAAC,IAAI,CAAC,GAAG;YACjB,IAAI,EAAE,MAAM;YACZ,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,OAAO,EAAE,EAAE,aAAa,EAAE,aAAa,WAAW,GAAG,EAAE,GAAG,OAAO,EAAE;SACpE,CAAC;QACF,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;QAC7B,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;QACvD,0EAA0E;QAC1E,sEAAsE;QACtE,8DAA8D;QAC9D,MAAM,IAAI,GAAG,CAAC,CAAiB,EAAE,EAAE,CAAC,OAAO,CAAC,eAAe,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QACxF,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI;YACJ,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,OAAO;YACP,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACnE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SACvD,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;YAC3B,SAAS;QACX,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,QAAQ,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YAC1C,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrC,+EAA+E;iBAC1E,IAAI,CAAC,IAAI,CAAC,IAAI;gBAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IACD,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,CAAC;QACtC,KAAK;QACL,GAAG;QACH,QAAQ;QACR,OAAO;QACP,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM;QACvC,KAAK;QACL,KAAK;QACL,eAAe,EAAE,OAAO,CAAC,eAAe;KACzC,CAAC;AACJ,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,eAAe,CAAC,GAAwB,EAAE,KAAK,GAAG,aAAa;IAC7E,IAAI,GAAG,CAAC,KAAK,KAAK,CAAC;QAAE,OAAO,gBAAgB,CAAC;IAC7C,IAAI,CAAC,GAAG,CAAC,eAAe;QAAE,OAAO,eAAe,GAAG,CAAC,KAAK,QAAQ,CAAC;IAClE,OAAO,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,gBAAgB,GAAG,CAAC,GAAG,CAAC,MAAM,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,6BAA6B,CAAC;AACrH,CAAC;AAID,SAAS,QAAQ,CAAC,CAAU;IAC1B,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,aAAa,CAAC,CAAO,EAAE,CAAO;IAC5C,MAAM,GAAG,GAAS,EAAE,GAAG,CAAC,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9E,IAAI,KAAK,GAAY,CAAC,CAAC;QACvB,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC;YAAE,KAAK,GAAG,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;aAC3D,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YAAE,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtF,iFAAiF;QACjF,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACjG,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAUD,MAAM,uBAAuB,GAAG,wBAAwB,CAAC;AACzD,wEAAwE;AACxE,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAkB,CAAC;AAEtD,qFAAqF;AACrF,SAAS,QAAQ,CAAC,IAAY;IAC5B,MAAM,CAAC,GAAG,+BAA+B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrD,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACtC,CAAC;AAED,SAAS,KAAK,CAAC,GAAW;IACxB,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,4DAA4D;QAC5D,OAAQ,GAA6B,CAAC,IAAI,KAAK,OAAO,CAAC;IACzD,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,uBAAuB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAE9C;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAW,EAAE,UAAoC,KAAK,EAAE,MAAc,IAAI,CAAC,GAAG,EAAE;IACjH,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;IACT,CAAC;IACD,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC;YAAE,SAAS;QACxD,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;YAAE,SAAS;QACvE,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;YACzB,IAAI,GAAG,GAAG,EAAE,CAAC,OAAO,GAAG,uBAAuB;gBAAE,SAAS;YACzD,IAAI,GAAG,KAAK,SAAS,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG;gBAAE,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACzF,CAAC;QAAC,MAAM,CAAC;YACP,mEAAmE;QACrE,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAY,EAAE,MAAc,EAAE,CAAC,MAAM,EAAE;IAC1E,IAAI,GAAG,GAAG,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACxB,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,uBAAuB,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACzF,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC9E,mBAAmB,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACtC,GAAG,GAAG,OAAO,CAAC;IAChB,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;IACpG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAClE,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAc,EAAE,QAAc,EAAE,KAAiB,EAAE;IACpF,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACjE,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,IAAI,oBAAoB,CAAC;IAC7D,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,MAAM,MAAM,GAAG,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,YAAY,IAAI,CAAC,MAAM;YAAE,SAAS;QAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACnE,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QAClC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,MAAe,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3F,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,cAAc,KAAK,qDAAsD,GAAa,CAAC,OAAO,GAAG,CAAC,CAAC;QACrH,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,cAAc,KAAK,qBAAqB,CAAC,CAAC;QACjF,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;QACtB,IAAI,MAAM;YAAE,GAAG,CAAC,CAAC,CAAC,GAAG,cAAc,MAAM,EAAE,CAAC;;YACvC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;QACzB,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,kBAAkB,CAAC,GAAwB;IACzD,MAAM,WAAW,GAAS,EAAE,CAAC;IAC7B,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM;QAAE,WAAW,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACpD,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM;QAAE,WAAW,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;IAC9C,OAAO,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAChE,CAAC"}
1
+ {"version":3,"file":"claude-mcp.js","sourceRoot":"","sources":["../../src/agents/claude-mcp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import { spawnSync } from "node:child_process";
2
+ import { type McpAttachment } from "./claude-mcp.js";
3
+ import type { HarnessPlan, PlanInput } from "./types.js";
4
+ /**
5
+ * Cursor CLI (`cursor-agent`) through Ditto.
6
+ *
7
+ * Cursor's own service runs inference, so Ditto supplies only the endpoint's
8
+ * tools, as native MCP servers. Cursor has no per-launch MCP flag, but it
9
+ * loads a plugin directory per launch (`--plugin-dir`), and a plugin's
10
+ * `.mcp.json` declares servers, so the attachment goes there and nothing is
11
+ * written to ~/.cursor. Cursor names a plugin's servers after the plugin
12
+ * directory, `plugin-ditto-<server>`. The key stays out of the file: Cursor
13
+ * expands `${env:DITTO_ROUTER_MCP_KEY}` in headers.
14
+ */
15
+ /** The plugin directory's name, which Cursor puts in every server's name. */
16
+ export declare const CURSOR_PLUGIN_NAME = "ditto";
17
+ /**
18
+ * The plugin's `.mcp.json`. Cursor's permission rules live only in its own
19
+ * config files, so Cursor itself asks before every call (or runs them all
20
+ * under --yolo); Ditto's gate still holds what the endpoint's policy holds.
21
+ */
22
+ export declare function cursorMcpConfig(mcp: McpAttachment): string;
23
+ /**
24
+ * Writes the launch's plugin into a private temporary directory and returns
25
+ * its path. It holds no secret, but it is the session's tool wiring, so it is
26
+ * 0700 and removed when the CLI exits; one a killed CLI left behind is swept
27
+ * by a later launch once its process is gone, like Claude's settings copies.
28
+ */
29
+ export declare function writeCursorPlugin(mcp: McpAttachment, tmp?: string): string;
30
+ /**
31
+ * A new, empty Cursor chat for this session, so the session can name its own
32
+ * conversation: `--resume <id>` reopens exactly it, where `--continue` would
33
+ * pick whichever chat in the directory is newest. Undefined when Cursor does
34
+ * not answer with an id.
35
+ */
36
+ export declare function createCursorChat(cwd: string, run?: typeof spawnSync): string | undefined;
37
+ /**
38
+ * Builds the `cursor-agent` invocation. `pluginDir` is the directory
39
+ * writeCursorPlugin made for this launch (absent: no tools attached).
40
+ */
41
+ export declare function planCursor(input: PlanInput, pluginDir?: string): HarnessPlan;
@@ -0,0 +1,103 @@
1
+ import { spawnSync } from "node:child_process";
2
+ import { chmodSync, mkdirSync, mkdtempSync, rmSync, writeFileSync } from "node:fs";
3
+ import os from "node:os";
4
+ import path from "node:path";
5
+ import { MCP_KEY_ENV, sweepStaleSettings } from "./claude-mcp.js";
6
+ /**
7
+ * Cursor CLI (`cursor-agent`) through Ditto.
8
+ *
9
+ * Cursor's own service runs inference, so Ditto supplies only the endpoint's
10
+ * tools, as native MCP servers. Cursor has no per-launch MCP flag, but it
11
+ * loads a plugin directory per launch (`--plugin-dir`), and a plugin's
12
+ * `.mcp.json` declares servers, so the attachment goes there and nothing is
13
+ * written to ~/.cursor. Cursor names a plugin's servers after the plugin
14
+ * directory, `plugin-ditto-<server>`. The key stays out of the file: Cursor
15
+ * expands `${env:DITTO_ROUTER_MCP_KEY}` in headers.
16
+ */
17
+ /** The plugin directory's name, which Cursor puts in every server's name. */
18
+ export const CURSOR_PLUGIN_NAME = "ditto";
19
+ /**
20
+ * The plugin's `.mcp.json`. Cursor's permission rules live only in its own
21
+ * config files, so Cursor itself asks before every call (or runs them all
22
+ * under --yolo); Ditto's gate still holds what the endpoint's policy holds.
23
+ */
24
+ export function cursorMcpConfig(mcp) {
25
+ const mcpServers = {};
26
+ for (const server of mcp.attached) {
27
+ mcpServers[server.name] = { url: server.url, headers: { Authorization: `Bearer \${env:${MCP_KEY_ENV}}`, ...server.headers } };
28
+ }
29
+ return JSON.stringify({ mcpServers }, null, 2);
30
+ }
31
+ /** Plugin directories made by this process, removed when it exits. */
32
+ const pluginRoots = [];
33
+ const PLUGIN_PREFIX = "ditto-cursor-";
34
+ /**
35
+ * Writes the launch's plugin into a private temporary directory and returns
36
+ * its path. It holds no secret, but it is the session's tool wiring, so it is
37
+ * 0700 and removed when the CLI exits; one a killed CLI left behind is swept
38
+ * by a later launch once its process is gone, like Claude's settings copies.
39
+ */
40
+ export function writeCursorPlugin(mcp, tmp = os.tmpdir()) {
41
+ if (pluginRoots.length === 0)
42
+ sweepStaleSettings(tmp, undefined, undefined, PLUGIN_PREFIX);
43
+ const root = mkdtempSync(path.join(tmp, `${PLUGIN_PREFIX}${process.pid}-`));
44
+ chmodSync(root, 0o700);
45
+ if (pluginRoots.push(root) === 1)
46
+ process.once("exit", () => { for (const dir of pluginRoots)
47
+ rmSync(dir, { recursive: true, force: true }); });
48
+ const dir = path.join(root, CURSOR_PLUGIN_NAME);
49
+ mkdirSync(path.join(dir, ".cursor-plugin"), { recursive: true });
50
+ writeFileSync(path.join(dir, ".cursor-plugin", "plugin.json"), JSON.stringify({ name: CURSOR_PLUGIN_NAME, version: "1.0.0", description: "Ditto endpoint tools" }, null, 2));
51
+ writeFileSync(path.join(dir, ".mcp.json"), cursorMcpConfig(mcp));
52
+ return dir;
53
+ }
54
+ /**
55
+ * A new, empty Cursor chat for this session, so the session can name its own
56
+ * conversation: `--resume <id>` reopens exactly it, where `--continue` would
57
+ * pick whichever chat in the directory is newest. Undefined when Cursor does
58
+ * not answer with an id.
59
+ */
60
+ export function createCursorChat(cwd, run = spawnSync) {
61
+ const res = run("cursor-agent", ["create-chat"], { cwd, encoding: "utf8", timeout: 15_000 });
62
+ const id = typeof res.stdout === "string" ? res.stdout.trim() : "";
63
+ return res.status === 0 && /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(id) ? id : undefined;
64
+ }
65
+ /**
66
+ * Builds the `cursor-agent` invocation. `pluginDir` is the directory
67
+ * writeCursorPlugin made for this launch (absent: no tools attached).
68
+ */
69
+ export function planCursor(input, pluginDir) {
70
+ if (input.yellow)
71
+ throw new Error("--yellow is not supported for Cursor CLI; use --yolo (--force) or Cursor's own prompts");
72
+ const args = [];
73
+ if (pluginDir)
74
+ args.push("--plugin-dir", pluginDir);
75
+ if (input.resumeId)
76
+ args.push("--resume", input.resumeId);
77
+ else if (input.resumeLast)
78
+ args.push("--continue");
79
+ if (input.model)
80
+ args.push("--model", input.model);
81
+ if (input.plan)
82
+ args.push("--plan");
83
+ // --force is Cursor-wide (any command, any MCP call), so only an explicit
84
+ // --yolo adds it, and workspace trust stays the user's decision. A -p run
85
+ // without it still edits and runs shell commands, but Cursor rejects every
86
+ // MCP call it cannot ask about (the launch says so).
87
+ if (input.yolo)
88
+ args.push("--force");
89
+ if (input.prompt !== undefined) {
90
+ args.push("-p", input.prompt, ...input.passthrough);
91
+ }
92
+ else {
93
+ args.push(...input.passthrough);
94
+ }
95
+ return {
96
+ command: "cursor-agent",
97
+ args,
98
+ envSet: input.mcp ? { [MCP_KEY_ENV]: input.mcpApiKey ?? input.apiKey } : {},
99
+ envUnset: [],
100
+ installHint: "install Cursor CLI: curl https://cursor.com/install -fsS | bash (then `cursor-agent login`)",
101
+ };
102
+ }
103
+ //# sourceMappingURL=cursor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/agents/cursor.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { type McpAttachment } from "./claude-mcp.js";
1
2
  import { type HarnessPlan, type PlanInput } from "./types.js";
2
3
  /** Env var the grok provider reads the endpoint key from. */
3
4
  export declare const GROK_KEY_ENV = "DITTO_INFERENCE_API_KEY";
@@ -17,18 +18,31 @@ export declare const GROK_MODEL_ID = "ditto";
17
18
  export declare function grokHomeDir(configDir: string, sessionId: string): string;
18
19
  /**
19
20
  * Creates (if missing) the launch GROK_HOME: the Ditto model config, hooks
20
- * placeholder, and symlinks to the user's skills/plugins. config.toml and
21
- * hooks/ditto.json are rewritten on every call — they carry no secrets (the
22
- * key rides env_key) but do carry launch-scoped settings like the hook
23
- * socket. Returns the home path.
21
+ * placeholder, and symlinks to the user's skills/plugins. config.toml is
22
+ * rewritten whenever `input` is given (the launch), hooks/ditto.json whenever
23
+ * a hook server is — they carry no secrets (keys ride env vars) but do carry
24
+ * launch-scoped settings like the attached MCP servers and the hook socket.
25
+ * A hook refresh passes no input, so it keeps the launch's model and servers.
26
+ * Returns the home path.
24
27
  */
25
- export declare function ensureGrokHome(configDir: string, sessionId: string, input: PlanInput, hookServer?: {
28
+ export declare function ensureGrokHome(configDir: string, sessionId: string, input: PlanInput | undefined, hookServer?: {
26
29
  socketPath: string;
27
30
  scriptPath: string;
28
31
  nodePath: string;
29
32
  }): Promise<string>;
30
33
  /** The TOML `[model.ditto]` entry that routes grok at the Ditto gateway. */
31
34
  export declare function grokModelConfig(input: PlanInput): string;
35
+ /**
36
+ * Native MCP for grok: each attached server as a `[mcp_servers.<name>]` table
37
+ * in the launch GROK_HOME, with the key read from MCP_KEY_ENV
38
+ * (bearer_token_env_var), and `[permission]` rules that put the endpoint's
39
+ * approval policy into grok's own prompts. Grok names a tool `server__tool`;
40
+ * ask beats allow, so a server-wide allow plus one ask per gated tool asks
41
+ * about exactly the calls Ditto would have held. An unattended launch runs
42
+ * grok with --always-approve, which skips ask rules but never deny rules, so
43
+ * there the gated tools are denied instead: nobody is there to approve them.
44
+ */
45
+ export declare function grokMcpConfig(mcp: McpAttachment, unattended?: boolean): string;
32
46
  /** The `$GROK_HOME/hooks/ditto.json` that reports turn boundaries to the CLI host. */
33
47
  export declare function grokHookConfig(server: {
34
48
  socketPath: string;
@@ -1,6 +1,7 @@
1
1
  import { mkdir, symlink, writeFile } from "node:fs/promises";
2
2
  import os from "node:os";
3
3
  import path from "node:path";
4
+ import { MCP_KEY_ENV, TOOL_SURFACE_HEADER, TOOL_SURFACE_MCP } from "./claude-mcp.js";
4
5
  import { SESSION_HEADER } from "./types.js";
5
6
  /** Env var the grok provider reads the endpoint key from. */
6
7
  export const GROK_KEY_ENV = "DITTO_INFERENCE_API_KEY";
@@ -37,10 +38,12 @@ const GROK_SHARED_DIRS = [
37
38
  ];
38
39
  /**
39
40
  * Creates (if missing) the launch GROK_HOME: the Ditto model config, hooks
40
- * placeholder, and symlinks to the user's skills/plugins. config.toml and
41
- * hooks/ditto.json are rewritten on every call — they carry no secrets (the
42
- * key rides env_key) but do carry launch-scoped settings like the hook
43
- * socket. Returns the home path.
41
+ * placeholder, and symlinks to the user's skills/plugins. config.toml is
42
+ * rewritten whenever `input` is given (the launch), hooks/ditto.json whenever
43
+ * a hook server is — they carry no secrets (keys ride env vars) but do carry
44
+ * launch-scoped settings like the attached MCP servers and the hook socket.
45
+ * A hook refresh passes no input, so it keeps the launch's model and servers.
46
+ * Returns the home path.
44
47
  */
45
48
  export async function ensureGrokHome(configDir, sessionId, input, hookServer) {
46
49
  const home = grokHomeDir(configDir, sessionId);
@@ -57,7 +60,8 @@ export async function ensureGrokHome(configDir, sessionId, input, hookServer) {
57
60
  continue; // missing source or other failure: skip, best effort
58
61
  }
59
62
  }
60
- await writeFile(path.join(home, "config.toml"), `${grokModelConfig(input)}\n`);
63
+ if (input)
64
+ await writeFile(path.join(home, "config.toml"), `${[grokModelConfig(input), input.mcp ? grokMcpConfig(input.mcp, Boolean(input.unattended || input.prompt !== undefined)) : ""].filter(Boolean).join("\n\n")}\n`);
61
65
  if (hookServer)
62
66
  await writeFile(path.join(home, "hooks", "ditto.json"), grokHookConfig(hookServer));
63
67
  return home;
@@ -75,11 +79,38 @@ export function grokModelConfig(input) {
75
79
  `env_key = ${JSON.stringify(GROK_KEY_ENV)}`,
76
80
  `context_window = 200000`,
77
81
  `env_http_headers = { ${JSON.stringify(SESSION_HEADER)} = ${JSON.stringify(GROK_SESSION_ENV)} }`,
82
+ // The tools are attached as MCP servers; the router must not inject them again.
83
+ ...(input.mcp ? [`extra_headers = { ${JSON.stringify(TOOL_SURFACE_HEADER)} = ${JSON.stringify(TOOL_SURFACE_MCP)} }`] : []),
78
84
  "",
79
85
  "[models]",
80
86
  `default = ${JSON.stringify(GROK_MODEL_ID)}`,
81
87
  ].join("\n");
82
88
  }
89
+ /**
90
+ * Native MCP for grok: each attached server as a `[mcp_servers.<name>]` table
91
+ * in the launch GROK_HOME, with the key read from MCP_KEY_ENV
92
+ * (bearer_token_env_var), and `[permission]` rules that put the endpoint's
93
+ * approval policy into grok's own prompts. Grok names a tool `server__tool`;
94
+ * ask beats allow, so a server-wide allow plus one ask per gated tool asks
95
+ * about exactly the calls Ditto would have held. An unattended launch runs
96
+ * grok with --always-approve, which skips ask rules but never deny rules, so
97
+ * there the gated tools are denied instead: nobody is there to approve them.
98
+ */
99
+ export function grokMcpConfig(mcp, unattended = false) {
100
+ const lines = [];
101
+ const allow = [];
102
+ const ask = [];
103
+ for (const server of mcp.attached) {
104
+ lines.push(`[mcp_servers.${JSON.stringify(server.name)}]`, `url = ${JSON.stringify(server.url)}`, `bearer_token_env_var = ${JSON.stringify(MCP_KEY_ENV)}`, "enabled = true", `headers = { ${Object.entries(server.headers).map(([k, v]) => `${JSON.stringify(k)} = ${JSON.stringify(v)}`).join(", ")} }`, "");
105
+ allow.push(`MCPTool(${server.name}__*)`);
106
+ for (const tool of server.askTools)
107
+ ask.push(`MCPTool(${server.name}__${tool})`);
108
+ }
109
+ lines.push("[permission]", `allow = ${JSON.stringify(allow)}`);
110
+ if (ask.length)
111
+ lines.push(`${unattended ? "deny" : "ask"} = ${JSON.stringify(ask)}`);
112
+ return lines.join("\n");
113
+ }
83
114
  const GROK_HOOK_EVENTS = ["UserPromptSubmit", "Stop", "PreToolUse"];
84
115
  /** The `$GROK_HOME/hooks/ditto.json` that reports turn boundaries to the CLI host. */
85
116
  export function grokHookConfig(server) {
@@ -143,7 +174,11 @@ export function planGrok(input, grokHome, grokResume = false) {
143
174
  GROK_MODELS_BASE_URL: input.baseUrl,
144
175
  GROK_XAI_API_BASE_URL: input.baseUrl.replace(/\/v1\/?$/, ""),
145
176
  XAI_API_KEY: input.apiKey,
177
+ // The `[model.ditto]` env_key. Unset, grok 1.0.77 sent the gateway no
178
+ // endpoint key and every turn failed with a 401.
179
+ [GROK_KEY_ENV]: input.apiKey,
146
180
  [GROK_SESSION_ENV]: input.sessionId,
181
+ ...(input.mcp ? { [MCP_KEY_ENV]: input.mcpApiKey ?? input.apiKey } : {}),
147
182
  },
148
183
  envUnset: [],
149
184
  installHint: "install Grok: curl -fsSL https://grok.com/install | sh (or see https://grok.com)",
@@ -1 +1 @@
1
- {"version":3,"file":"grok.js","sourceRoot":"","sources":["../../src/agents/grok.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"grok.js","sourceRoot":"","sources":["../../src/agents/grok.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAsB,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACzG,OAAO,EAAoC,cAAc,EAAE,MAAM,YAAY,CAAC;AAE9E,6DAA6D;AAC7D,MAAM,CAAC,MAAM,YAAY,GAAG,yBAAyB,CAAC;AAEtD,0EAA0E;AAC1E,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AAEnD,kEAAkE;AAClE,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC;AAErC;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CAAC,SAAiB,EAAE,SAAiB;IAC9D,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;AACvD,CAAC;AAED,6EAA6E;AAC7E,MAAM,gBAAgB,GAAG;IACvB,QAAQ;IACR,SAAS;IACT,mBAAmB;IACnB,mBAAmB;IACnB,QAAQ;IACR,UAAU;IACV,aAAa;IACb,SAAS;IACT,UAAU;IACV,QAAQ;IACR,sBAAsB;IACtB,QAAQ;CACA,CAAC;AAEX;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,SAAiB,EACjB,SAAiB,EACjB,KAA4B,EAC5B,UAAyE;IAEzE,MAAM,IAAI,GAAG,WAAW,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC/C,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,KAAK,MAAM,IAAI,IAAI,gBAAgB,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,GAAI,GAA6B,CAAC,IAAI,CAAC;YACjD,IAAI,IAAI,KAAK,QAAQ;gBAAE,SAAS,CAAC,qDAAqD;QACxF,CAAC;IACH,CAAC;IACD,IAAI,KAAK;QAAE,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7N,IAAI,UAAU;QAAE,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;IACpG,OAAO,IAAI,CAAC;AACd,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,eAAe,CAAC,KAAgB;IAC9C,2EAA2E;IAC3E,uEAAuE;IACvE,qEAAqE;IACrE,OAAO;QACL,UAAU,aAAa,GAAG;QAC1B,WAAW,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,UAAU,CAAC,EAAE;QACtD,cAAc,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;QAC7C,UAAU,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;QACnC,aAAa,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE;QAC3C,yBAAyB;QACzB,wBAAwB,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI;QAChG,gFAAgF;QAChF,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,qBAAqB,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1H,EAAE;QACF,UAAU;QACV,aAAa,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE;KAC7C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAAC,GAAkB,EAAE,UAAU,GAAG,KAAK;IAClE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CACR,gBAAgB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAC9C,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EACrC,0BAA0B,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,EACvD,gBAAgB,EAChB,eAAe,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAC3H,EAAE,CACH,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,IAAI,MAAM,CAAC,CAAC;QACzC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,QAAQ;YAAE,GAAG,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC,CAAC;IACnF,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC/D,IAAI,GAAG,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACtF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,gBAAgB,GAAG,CAAC,kBAAkB,EAAE,MAAM,EAAE,YAAY,CAAU,CAAC;AAE7E,sFAAsF;AACtF,MAAM,UAAU,cAAc,CAAC,MAAoE;IACjG,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxH,MAAM,KAAK,GAA4B,EAAE,CAAC;IAC1C,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;QACrC,KAAK,CAAC,KAAK,CAAC,GAAG;YACb;gBACE,uEAAuE;gBACvE,oDAAoD;gBACpD,GAAG,CAAC,KAAK,KAAK,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;aAClD;SACF,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAgB,EAAE,QAAgB,EAAE,UAAU,GAAG,KAAK;IAC7E,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,wEAAwE;IACxE,2EAA2E;IAC3E,yEAAyE;IACzE,mEAAmE;IACnE,MAAM,UAAU,GAAG,iEAAiE,CAAC;IACrF,IAAI,KAAK,CAAC,QAAQ;QAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;SACrD,IAAI,KAAK,CAAC,UAAU,IAAI,UAAU;QAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SAC1D,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAE5E,IAAI,KAAK,CAAC,KAAK;QAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAE9C,IAAI,KAAK,CAAC,IAAI;QAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;SACzC,IAAI,KAAK,CAAC,MAAM;QAAE,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;SACzD,IAAI,KAAK,CAAC,IAAI;QAAE,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;SACvD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;QAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,4CAA4C;IAEhH,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;QAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9D,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;IAEhC,OAAO;QACL,OAAO,EAAE,MAAM;QACf,IAAI;QACJ,MAAM,EAAE;YACN,SAAS,EAAE,QAAQ;YACnB,wEAAwE;YACxE,kEAAkE;YAClE,oBAAoB,EAAE,KAAK,CAAC,OAAO;YACnC,qBAAqB,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;YAC5D,WAAW,EAAE,KAAK,CAAC,MAAM;YACzB,sEAAsE;YACtE,iDAAiD;YACjD,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,MAAM;YAC5B,CAAC,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS;YACnC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzE;QACD,QAAQ,EAAE,EAAE;QACZ,WAAW,EAAE,kFAAkF;KAChG,CAAC;AACJ,CAAC"}