@heyditto/cli 3.11.0 → 3.12.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 +11 -1
- package/dist/agents/claude-mcp.d.ts +24 -2
- package/dist/agents/claude-mcp.js +30 -4
- package/dist/agents/claude-mcp.js.map +1 -1
- package/dist/agents/codex.d.ts +14 -0
- package/dist/agents/codex.js +42 -2
- package/dist/agents/codex.js.map +1 -1
- package/dist/agents/launch.d.ts +8 -6
- package/dist/agents/launch.js +22 -14
- package/dist/agents/launch.js.map +1 -1
- package/dist/agents/types.d.ts +1 -1
- package/dist/commands.js +6 -4
- package/dist/commands.js.map +1 -1
- package/dist/dittoconfig/profiles.js +14 -10
- package/dist/dittoconfig/profiles.js.map +1 -1
- package/dist/update-lock.json +1 -1
- package/package.json +1 -1
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 as its own MCP servers, or keep them on the router (default: the endpoint's `claude_tool_surface`, else MCP) |
|
|
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) |
|
|
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) |
|
|
@@ -717,6 +717,16 @@ How the wiring works:
|
|
|
717
717
|
- **Codex** speaks the Responses API only, so the endpoint is injected as a
|
|
718
718
|
`ditto` model provider via `-c` overrides (nothing is written to
|
|
719
719
|
`~/.codex/config.toml`) with the key in `DITTO_INFERENCE_API_KEY`.
|
|
720
|
+
- **Codex** gets the same MCP servers as Claude Code by default, the way cmux
|
|
721
|
+
attaches its computer-use server: one `-c mcp_servers.<name>={…}` override
|
|
722
|
+
per server, read from the same catalog, with `bearer_token_env_var =
|
|
723
|
+
"DITTO_ROUTER_MCP_KEY"` so the key stays out of argv and disk. Each override
|
|
724
|
+
sets `enabled = true`, because Codex merges it into a server of the same
|
|
725
|
+
name in your own config. Approvals map onto Codex's: tools Ditto holds
|
|
726
|
+
itself run as `approve`, and under `client_approvals` the gated ones are
|
|
727
|
+
`prompt` (`--yolo` runs them unasked). Claude's `permissions.deny` rules are
|
|
728
|
+
not applied to Codex. `--no-mcp` or `codex_tool_surface = "router"` keeps
|
|
729
|
+
the tools on the router.
|
|
720
730
|
|
|
721
731
|
### `codex-app`
|
|
722
732
|
|
|
@@ -67,19 +67,41 @@ export interface McpCatalog {
|
|
|
67
67
|
* it mid-task.
|
|
68
68
|
*/
|
|
69
69
|
export declare function mcpUnavailableLines(catalog: Pick<McpCatalog, "unavailable">): string[];
|
|
70
|
-
/**
|
|
70
|
+
/**
|
|
71
|
+
* One attached server in harness-neutral form, for harnesses that take MCP
|
|
72
|
+
* configuration in their own shape (codex-mcp.ts). The key is never here:
|
|
73
|
+
* each harness reads it from MCP_KEY_ENV.
|
|
74
|
+
*/
|
|
75
|
+
export interface McpAttachedServer {
|
|
76
|
+
/** The harness-side server name (claudeServerName). */
|
|
77
|
+
name: string;
|
|
78
|
+
url: string;
|
|
79
|
+
/** Session and deny headers; not Authorization. */
|
|
80
|
+
headers: Record<string, string>;
|
|
81
|
+
/** Tools that run without the agent asking. */
|
|
82
|
+
allowTools: string[];
|
|
83
|
+
/** Tools the agent asks a person about first. */
|
|
84
|
+
askTools: string[];
|
|
85
|
+
}
|
|
86
|
+
/** What a launch needs to attach the catalog. */
|
|
71
87
|
export interface ClaudeMcpAttachment {
|
|
72
88
|
/** The `--mcp-config` JSON. */
|
|
73
89
|
config: string;
|
|
74
90
|
/** permissions.allow / permissions.ask for `--settings`. */
|
|
75
91
|
allow: string[];
|
|
76
92
|
ask: string[];
|
|
93
|
+
/** The same servers and policy, for every other harness. */
|
|
94
|
+
attached: McpAttachedServer[];
|
|
95
|
+
/** Catalog servers left out because their name is unsafe in an agent's config. */
|
|
96
|
+
skipped: string[];
|
|
77
97
|
servers: number;
|
|
78
98
|
tools: number;
|
|
79
99
|
/** Tools Ditto's policy would hold for a person. */
|
|
80
100
|
gated: number;
|
|
81
101
|
clientApprovals: boolean;
|
|
82
102
|
}
|
|
103
|
+
/** The catalog attached to a launch, whichever harness renders it. */
|
|
104
|
+
export type McpAttachment = ClaudeMcpAttachment;
|
|
83
105
|
/** Claude Code server name for a catalog server: the built-ins keep "ditto", the rest are "ditto-<source>". */
|
|
84
106
|
export declare function claudeServerName(server: string): string;
|
|
85
107
|
/** Reads the endpoint's MCP catalog with the session's own key. */
|
|
@@ -94,7 +116,7 @@ export declare function claudeMcpAttachment(catalog: McpCatalog, sessionId: stri
|
|
|
94
116
|
toolDeny?: string[];
|
|
95
117
|
}): ClaudeMcpAttachment;
|
|
96
118
|
/** Who stops a gated call, for the launch banner: only what is actually true. */
|
|
97
|
-
export declare function mcpApprovalNote(mcp: ClaudeMcpAttachment): string;
|
|
119
|
+
export declare function mcpApprovalNote(mcp: ClaudeMcpAttachment, agent?: string): string;
|
|
98
120
|
type Json = Record<string, unknown>;
|
|
99
121
|
/** Objects merge key by key, arrays concatenate without duplicates, anything else: b wins. */
|
|
100
122
|
export declare function mergeSettings(a: Json, b: Json): Json;
|
|
@@ -48,6 +48,13 @@ export function mcpUnavailableLines(catalog) {
|
|
|
48
48
|
return `${name} is disconnected (${why}); its tools are missing — ${fix}`;
|
|
49
49
|
});
|
|
50
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* A server name every agent's config can carry as a bare key: Codex splits
|
|
53
|
+
* `-c` paths on dots, and tool rules join the name with "__". The backend only
|
|
54
|
+
* serves names like this (mcpServerName); anything else is left out, the same
|
|
55
|
+
* way for every harness, rather than spliced into a config path.
|
|
56
|
+
*/
|
|
57
|
+
const SAFE_SERVER_NAME = /^[A-Za-z0-9][A-Za-z0-9_-]{0,62}$/;
|
|
51
58
|
/** Claude Code server name for a catalog server: the built-ins keep "ditto", the rest are "ditto-<source>". */
|
|
52
59
|
export function claudeServerName(server) {
|
|
53
60
|
return server === "ditto" ? "ditto" : `ditto-${server}`;
|
|
@@ -84,23 +91,40 @@ export async function fetchMcpCatalog(baseUrl, apiKey, sessionId, fetchImpl = fe
|
|
|
84
91
|
*/
|
|
85
92
|
export function claudeMcpAttachment(catalog, sessionId, opts = {}) {
|
|
86
93
|
const mcpServers = {};
|
|
94
|
+
const attached = [];
|
|
87
95
|
const allow = [];
|
|
88
96
|
const ask = [];
|
|
97
|
+
const skipped = [];
|
|
89
98
|
let tools = 0;
|
|
90
99
|
let gated = 0;
|
|
91
100
|
for (const server of catalog.servers) {
|
|
92
101
|
if (server.tools.length === 0)
|
|
93
102
|
continue;
|
|
103
|
+
if (!SAFE_SERVER_NAME.test(server.name)) {
|
|
104
|
+
skipped.push(server.name);
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
94
107
|
const name = claudeServerName(server.name);
|
|
108
|
+
const headers = { "X-Ditto-Session-Id": sessionId, ...(opts.toolDeny?.length ? { [TOOL_DENY_HEADER]: opts.toolDeny.join(",") } : {}) };
|
|
95
109
|
mcpServers[name] = {
|
|
96
110
|
type: "http",
|
|
97
111
|
url: server.url,
|
|
98
|
-
headers: { Authorization: `Bearer \${${MCP_KEY_ENV}}`,
|
|
112
|
+
headers: { Authorization: `Bearer \${${MCP_KEY_ENV}}`, ...headers },
|
|
99
113
|
};
|
|
100
114
|
tools += server.tools.length;
|
|
101
115
|
gated += server.tools.filter((t) => t.approval).length;
|
|
116
|
+
// Ditto's gate is the authority without client approvals; an agent prompt
|
|
117
|
+
// on top would ask twice. With them, the agent asks about exactly the
|
|
118
|
+
// calls Ditto would have held, unless bypass said not to ask.
|
|
119
|
+
const asks = (t) => catalog.clientApprovals && t.approval && !opts.yolo;
|
|
120
|
+
attached.push({
|
|
121
|
+
name,
|
|
122
|
+
url: server.url,
|
|
123
|
+
headers,
|
|
124
|
+
allowTools: server.tools.filter((t) => !asks(t)).map((t) => t.name),
|
|
125
|
+
askTools: server.tools.filter(asks).map((t) => t.name),
|
|
126
|
+
});
|
|
102
127
|
if (!catalog.clientApprovals) {
|
|
103
|
-
// Ditto's gate is the authority here; a Claude prompt on top would ask twice.
|
|
104
128
|
allow.push(`mcp__${name}`);
|
|
105
129
|
continue;
|
|
106
130
|
}
|
|
@@ -117,6 +141,8 @@ export function claudeMcpAttachment(catalog, sessionId, opts = {}) {
|
|
|
117
141
|
config: JSON.stringify({ mcpServers }),
|
|
118
142
|
allow,
|
|
119
143
|
ask,
|
|
144
|
+
attached,
|
|
145
|
+
skipped,
|
|
120
146
|
servers: Object.keys(mcpServers).length,
|
|
121
147
|
tools,
|
|
122
148
|
gated,
|
|
@@ -124,12 +150,12 @@ export function claudeMcpAttachment(catalog, sessionId, opts = {}) {
|
|
|
124
150
|
};
|
|
125
151
|
}
|
|
126
152
|
/** Who stops a gated call, for the launch banner: only what is actually true. */
|
|
127
|
-
export function mcpApprovalNote(mcp) {
|
|
153
|
+
export function mcpApprovalNote(mcp, agent = "Claude Code") {
|
|
128
154
|
if (mcp.gated === 0)
|
|
129
155
|
return "no gated tools";
|
|
130
156
|
if (!mcp.clientApprovals)
|
|
131
157
|
return `Ditto holds ${mcp.gated} gated`;
|
|
132
|
-
return mcp.ask.length ?
|
|
158
|
+
return mcp.ask.length ? `${agent} asks before ${mcp.ask.length} gated` : `${mcp.gated} gated run unasked (--yolo)`;
|
|
133
159
|
}
|
|
134
160
|
function isObject(v) {
|
|
135
161
|
return typeof v === "object" && v !== null && !Array.isArray(v);
|
|
@@ -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;AAgBD,+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,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,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,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3C,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,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;SAC5K,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,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;YAC7B,8EAA8E;YAC9E,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,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;IACtD,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,2BAA2B,GAAG,CAAC,GAAG,CAAC,MAAM,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,6BAA6B,CAAC;AACxH,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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"}
|
package/dist/agents/codex.d.ts
CHANGED
|
@@ -1,8 +1,22 @@
|
|
|
1
|
+
import { type McpAttachment } from "./claude-mcp.js";
|
|
1
2
|
import { type HarnessPlan, type PlanInput } from "./types.js";
|
|
2
3
|
/** Quotes a string as a TOML basic string for `codex -c key=value`. */
|
|
3
4
|
export declare function tomlString(value: string): string;
|
|
4
5
|
/** A TOML inline table of string pairs: `{"A"="1","B"="2"}`. */
|
|
5
6
|
export declare function tomlInlineTable(entries: Array<[string, string]>): string;
|
|
7
|
+
/**
|
|
8
|
+
* Native MCP for Codex: each attached server as one `-c mcp_servers.<name>=…`
|
|
9
|
+
* override, the way cmux attaches its computer-use server, so nothing is
|
|
10
|
+
* written to ~/.codex/config.toml. Codex merges an override into a server of
|
|
11
|
+
* the same name in the user's config (a disabled "ditto" entry is common), so
|
|
12
|
+
* every override turns its server on. The key stays out of argv: Codex reads
|
|
13
|
+
* it from MCP_KEY_ENV (bearer_token_env_var).
|
|
14
|
+
*
|
|
15
|
+
* Approvals follow the attachment: tools Ditto holds itself, or that bypass
|
|
16
|
+
* runs unasked, are "approve"; the rest are "prompt", so Codex asks about
|
|
17
|
+
* exactly the calls Ditto would have held.
|
|
18
|
+
*/
|
|
19
|
+
export declare function codexMcpArgs(mcp: McpAttachment): string[];
|
|
6
20
|
/**
|
|
7
21
|
* Builds the `codex` invocation.
|
|
8
22
|
*
|
package/dist/agents/codex.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { MCP_KEY_ENV, TOOL_SURFACE_HEADER, TOOL_SURFACE_MCP } from "./claude-mcp.js";
|
|
1
2
|
import { harnessHeaders } from "./harness-headers.js";
|
|
2
3
|
import { CODEX_KEY_ENV, SESSION_HEADER } from "./types.js";
|
|
3
4
|
/** Quotes a string as a TOML basic string for `codex -c key=value`. */
|
|
@@ -8,6 +9,38 @@ export function tomlString(value) {
|
|
|
8
9
|
export function tomlInlineTable(entries) {
|
|
9
10
|
return `{${entries.map(([k, v]) => `${tomlString(k)}=${tomlString(v)}`).join(",")}}`;
|
|
10
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* Native MCP for Codex: each attached server as one `-c mcp_servers.<name>=…`
|
|
14
|
+
* override, the way cmux attaches its computer-use server, so nothing is
|
|
15
|
+
* written to ~/.codex/config.toml. Codex merges an override into a server of
|
|
16
|
+
* the same name in the user's config (a disabled "ditto" entry is common), so
|
|
17
|
+
* every override turns its server on. The key stays out of argv: Codex reads
|
|
18
|
+
* it from MCP_KEY_ENV (bearer_token_env_var).
|
|
19
|
+
*
|
|
20
|
+
* Approvals follow the attachment: tools Ditto holds itself, or that bypass
|
|
21
|
+
* runs unasked, are "approve"; the rest are "prompt", so Codex asks about
|
|
22
|
+
* exactly the calls Ditto would have held.
|
|
23
|
+
*/
|
|
24
|
+
export function codexMcpArgs(mcp) {
|
|
25
|
+
const args = [];
|
|
26
|
+
// Names are bare keys (claudeMcpAttachment drops any other), so they can
|
|
27
|
+
// sit in the dotted -c path as they are.
|
|
28
|
+
for (const server of mcp.attached) {
|
|
29
|
+
const fields = [
|
|
30
|
+
["enabled", "true"],
|
|
31
|
+
["url", tomlString(server.url)],
|
|
32
|
+
["bearer_token_env_var", tomlString(MCP_KEY_ENV)],
|
|
33
|
+
["http_headers", tomlInlineTable(Object.entries(server.headers))],
|
|
34
|
+
["default_tools_approval_mode", tomlString("approve")],
|
|
35
|
+
];
|
|
36
|
+
if (server.askTools.length) {
|
|
37
|
+
const prompt = `{${tomlString("approval_mode")}=${tomlString("prompt")}}`;
|
|
38
|
+
fields.push(["tools", `{${server.askTools.map((t) => `${tomlString(t)}=${prompt}`).join(",")}}`]);
|
|
39
|
+
}
|
|
40
|
+
args.push("-c", `mcp_servers.${server.name}={${fields.map(([k, v]) => `${k}=${v}`).join(",")}}`);
|
|
41
|
+
}
|
|
42
|
+
return args;
|
|
43
|
+
}
|
|
11
44
|
/**
|
|
12
45
|
* Builds the `codex` invocation.
|
|
13
46
|
*
|
|
@@ -33,7 +66,14 @@ export function planCodex(input) {
|
|
|
33
66
|
else if (resuming) {
|
|
34
67
|
args.push("resume");
|
|
35
68
|
}
|
|
36
|
-
args.push("-c", `model_provider=${tomlString("ditto")}`, "-c", `model_providers.ditto.name=${tomlString(input.localInference ? "CLIProxy" : "Ditto")}`, "-c", `model_providers.ditto.base_url=${tomlString(input.baseUrl)}`, "-c", `model_providers.ditto.env_key=${tomlString(CODEX_KEY_ENV)}`, "-c", `model_providers.ditto.wire_api=${tomlString("responses")}`, "-c", `model_providers.ditto.http_headers=${tomlInlineTable(input.localInference ? [] : [
|
|
69
|
+
args.push("-c", `model_provider=${tomlString("ditto")}`, "-c", `model_providers.ditto.name=${tomlString(input.localInference ? "CLIProxy" : "Ditto")}`, "-c", `model_providers.ditto.base_url=${tomlString(input.baseUrl)}`, "-c", `model_providers.ditto.env_key=${tomlString(CODEX_KEY_ENV)}`, "-c", `model_providers.ditto.wire_api=${tomlString("responses")}`, "-c", `model_providers.ditto.http_headers=${tomlInlineTable(input.localInference ? [] : [
|
|
70
|
+
[SESSION_HEADER, input.sessionId],
|
|
71
|
+
...harnessHeaders("codex", input.harnessVersion),
|
|
72
|
+
// The tools are attached below; the router must not inject them again.
|
|
73
|
+
...(input.mcp ? [[TOOL_SURFACE_HEADER, TOOL_SURFACE_MCP]] : []),
|
|
74
|
+
])}`);
|
|
75
|
+
if (input.mcp)
|
|
76
|
+
args.push(...codexMcpArgs(input.mcp));
|
|
37
77
|
if (input.model)
|
|
38
78
|
args.push("-m", input.model);
|
|
39
79
|
if (input.yolo)
|
|
@@ -62,7 +102,7 @@ export function planCodex(input) {
|
|
|
62
102
|
return {
|
|
63
103
|
command: "codex",
|
|
64
104
|
args,
|
|
65
|
-
envSet: { [CODEX_KEY_ENV]: input.apiKey },
|
|
105
|
+
envSet: { [CODEX_KEY_ENV]: input.apiKey, ...(input.mcp ? { [MCP_KEY_ENV]: input.mcpApiKey ?? input.apiKey } : {}) },
|
|
66
106
|
envUnset: [],
|
|
67
107
|
installHint: "install Codex: npm i -g @openai/codex (or brew install codex)",
|
|
68
108
|
};
|
package/dist/agents/codex.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/agents/codex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAoC,cAAc,EAAE,MAAM,YAAY,CAAC;AAE7F,uEAAuE;AACvE,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,eAAe,CAAC,OAAgC;IAC9D,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACvF,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,SAAS,CAAC,KAAgB;IACxC,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,2EAA2E;IAC3E,0EAA0E;IAC1E,sEAAsE;IACtE,2EAA2E;IAC3E,qBAAqB;IACrB,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;IAC7D,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClB,IAAI,QAAQ;YAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;SAAM,IAAI,QAAQ,EAAE,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtB,CAAC;IAED,IAAI,CAAC,IAAI,CACP,IAAI,EACJ,kBAAkB,UAAU,CAAC,OAAO,CAAC,EAAE,EACvC,IAAI,EACJ,8BAA8B,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EACvF,IAAI,EACJ,kCAAkC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAC7D,IAAI,EACJ,iCAAiC,UAAU,CAAC,aAAa,CAAC,EAAE,EAC5D,IAAI,EACJ,kCAAkC,UAAU,CAAC,WAAW,CAAC,EAAE,EAC3D,IAAI,EACJ,sCAAsC,eAAe,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/agents/codex.ts"],"names":[],"mappings":"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"}
|
package/dist/agents/launch.d.ts
CHANGED
|
@@ -40,9 +40,9 @@ export interface LaunchOptions {
|
|
|
40
40
|
*/
|
|
41
41
|
headless?: boolean;
|
|
42
42
|
/**
|
|
43
|
-
* Claude
|
|
44
|
-
* (`--mcp`) or keep them on the router (`--no-mcp`). Unset follows
|
|
45
|
-
* endpoint's `
|
|
43
|
+
* Claude and Codex: attach the endpoint's tools as the agent's own MCP
|
|
44
|
+
* servers (`--mcp`) or keep them on the router (`--no-mcp`). Unset follows
|
|
45
|
+
* the endpoint's `<harness>_tool_surface` option, else native MCP.
|
|
46
46
|
*/
|
|
47
47
|
mcp?: boolean;
|
|
48
48
|
mcpOnly?: boolean;
|
|
@@ -68,12 +68,14 @@ export interface LaunchOptions {
|
|
|
68
68
|
export declare function t3FallbackEndpoint(options: LaunchOptions, env?: NodeJS.ProcessEnv): LaunchOptions;
|
|
69
69
|
/** Explicit flags (or resumed choices) win over repo/cloud launch defaults. */
|
|
70
70
|
export declare function resolveClaudeLaunchDefaults(options: LaunchOptions, defaults?: Record<string, unknown>): LaunchOptions;
|
|
71
|
+
/** Harnesses that can attach an endpoint's tools as their own MCP servers. */
|
|
72
|
+
export declare const MCP_HARNESSES: readonly Harness[];
|
|
71
73
|
/**
|
|
72
|
-
* `--mcp` / `--no-mcp`, else the endpoint's
|
|
73
|
-
* MCP:
|
|
74
|
+
* `--mcp` / `--no-mcp`, else the endpoint's `<harness>_tool_surface`, else
|
|
75
|
+
* native MCP: the agent gets an endpoint's tools as its own servers unless the
|
|
74
76
|
* endpoint keeps them on the router (`claude_tool_surface = "router"`).
|
|
75
77
|
*/
|
|
76
|
-
export declare function wantsMcp(options: Pick<LaunchOptions, "mcp">, endpoint: Pick<InferenceEndpoint, "providerOptions"
|
|
78
|
+
export declare function wantsMcp(options: Pick<LaunchOptions, "mcp">, endpoint: Pick<InferenceEndpoint, "providerOptions">, harness?: Harness): boolean;
|
|
77
79
|
/** Interactive numbered picker; also accepts a slug or id. Exported for `heyditto endpoints pick`. */
|
|
78
80
|
export declare function pickEndpoint(endpoints: InferenceEndpoint[], defaultSlug?: string): Promise<InferenceEndpoint>;
|
|
79
81
|
/** Refuses to launch against an endpoint the backend marked inactive (e.g. awaiting the user's plan). */
|
package/dist/agents/launch.js
CHANGED
|
@@ -64,15 +64,19 @@ export function resolveClaudeLaunchDefaults(options, defaults = {}) {
|
|
|
64
64
|
return { ...options, mcpOnly, remoteTransport };
|
|
65
65
|
}
|
|
66
66
|
const DRY_RUN_KEY = "ditto_inf_<minted-at-launch>";
|
|
67
|
+
/** Harnesses that can attach an endpoint's tools as their own MCP servers. */
|
|
68
|
+
export const MCP_HARNESSES = ["claude", "codex"];
|
|
67
69
|
/**
|
|
68
|
-
* `--mcp` / `--no-mcp`, else the endpoint's
|
|
69
|
-
* MCP:
|
|
70
|
+
* `--mcp` / `--no-mcp`, else the endpoint's `<harness>_tool_surface`, else
|
|
71
|
+
* native MCP: the agent gets an endpoint's tools as its own servers unless the
|
|
70
72
|
* endpoint keeps them on the router (`claude_tool_surface = "router"`).
|
|
71
73
|
*/
|
|
72
|
-
export function wantsMcp(options, endpoint) {
|
|
74
|
+
export function wantsMcp(options, endpoint, harness = "claude") {
|
|
75
|
+
if (!MCP_HARNESSES.includes(harness))
|
|
76
|
+
return false;
|
|
73
77
|
if (options.mcp !== undefined)
|
|
74
78
|
return options.mcp;
|
|
75
|
-
return endpoint.providerOptions?.
|
|
79
|
+
return endpoint.providerOptions?.[`${harness}_tool_surface`] !== "router";
|
|
76
80
|
}
|
|
77
81
|
/**
|
|
78
82
|
* Ditto's hooks for this launch, from the repository profile that names this
|
|
@@ -116,8 +120,8 @@ async function repoHooks(endpoint, profile, cwd, requested, enabled) {
|
|
|
116
120
|
return { attachment, banner: `${attachment.summary.join(", ")} ${c("dim", `(${source})`)}` };
|
|
117
121
|
}
|
|
118
122
|
/** Someone chose native MCP for this launch, rather than getting it by default. */
|
|
119
|
-
function mcpChosen(options, endpoint) {
|
|
120
|
-
return options.mcp === true || endpoint.providerOptions?.
|
|
123
|
+
function mcpChosen(options, endpoint, harness) {
|
|
124
|
+
return options.mcp === true || endpoint.providerOptions?.[`${harness}_tool_surface`] === "mcp";
|
|
121
125
|
}
|
|
122
126
|
/**
|
|
123
127
|
* The banner's tools field. A fallback to the router is yellow only when MCP
|
|
@@ -128,8 +132,9 @@ function mcpBanner(mcp, opts) {
|
|
|
128
132
|
return c("dim", "none (the endpoint has no tools)");
|
|
129
133
|
if (!mcp)
|
|
130
134
|
return opts.dryRun ? "mcp (catalog read at launch)" : c(opts.chosen ? "yellow" : "dim", "router (MCP not attached)");
|
|
131
|
-
return `mcp ${c("dim", `(${mcp.servers} servers, ${mcp.tools} tools; ${mcpApprovalNote(mcp)})`)}`;
|
|
135
|
+
return `mcp ${c("dim", `(${mcp.servers} servers, ${mcp.tools} tools; ${mcpApprovalNote(mcp, opts.agent)})`)}`;
|
|
132
136
|
}
|
|
137
|
+
const AGENT_LABELS = { claude: "Claude Code", codex: "Codex", grok: "Grok" };
|
|
133
138
|
function log(line, options) {
|
|
134
139
|
writeNote(`${c("dim", "ditto:")} ${line}\n`, options);
|
|
135
140
|
}
|
|
@@ -578,10 +583,11 @@ export async function launchHarness(harness, rawArgs, options) {
|
|
|
578
583
|
log(`using ${fallbackEndpoint} (no repository .ditto default here)`);
|
|
579
584
|
endpoint ??= await resolveEndpoint(requestedEndpoint?.trim() ? requestedEndpoint : fallbackEndpoint, catalog.endpoints, selected);
|
|
580
585
|
const hooks = harness === "claude" ? await repoHooks(endpoint, repoProfile, cwd, Boolean(requestedEndpoint?.trim()), options.hooks !== false) : undefined;
|
|
581
|
-
|
|
582
|
-
|
|
586
|
+
// The repository's launch defaults (its <agent>_tool_surface among them)
|
|
587
|
+
// beat the endpoint's saved options for this launch.
|
|
588
|
+
endpoint = { ...endpoint, providerOptions: { ...endpoint.providerOptions, ...repoLaunchDefaults } };
|
|
589
|
+
if (harness === "claude")
|
|
583
590
|
options = resolveClaudeLaunchDefaults(options, endpoint.providerOptions);
|
|
584
|
-
}
|
|
585
591
|
if (!options.mcpOnly && !proxy)
|
|
586
592
|
await assertEndpointActive(endpoint);
|
|
587
593
|
if (options.mcpOnly && (harness !== "claude" || options.mcp === false))
|
|
@@ -642,20 +648,22 @@ export async function launchHarness(harness, rawArgs, options) {
|
|
|
642
648
|
// than launching an agent with none. Native MCP is the default, so the
|
|
643
649
|
// fallback is only flagged when someone asked for MCP; an endpoint the
|
|
644
650
|
// surface refuses (an app's) would otherwise warn on every launch.
|
|
645
|
-
const wantMcp =
|
|
646
|
-
const chosen = mcpChosen(options, endpoint);
|
|
651
|
+
const wantMcp = options.mcpOnly || wantsMcp(options, endpoint, harness);
|
|
652
|
+
const chosen = mcpChosen(options, endpoint, harness);
|
|
647
653
|
let mcp;
|
|
648
654
|
let noTools = false;
|
|
649
655
|
if (wantMcp && key?.key) {
|
|
650
656
|
try {
|
|
651
657
|
const mcpCatalog = await fetchMcpCatalog(catalog.baseUrl, key.key, sessionId);
|
|
652
|
-
const attachment = claudeMcpAttachment(mcpCatalog, sessionId, { yolo: options.yolo, toolDeny: claudeDittoDenyRules(cwd, process.env) });
|
|
658
|
+
const attachment = claudeMcpAttachment(mcpCatalog, sessionId, { yolo: options.yolo, toolDeny: harness === "claude" ? claudeDittoDenyRules(cwd, process.env) : undefined });
|
|
653
659
|
if (attachment.tools > 0)
|
|
654
660
|
mcp = attachment;
|
|
655
661
|
else
|
|
656
662
|
noTools = true;
|
|
657
663
|
for (const line of mcpUnavailableLines(mcpCatalog))
|
|
658
664
|
log(c("yellow", line));
|
|
665
|
+
for (const name of attachment.skipped)
|
|
666
|
+
log(c("yellow", `MCP server ${JSON.stringify(name)} left out: its name cannot be used in an agent's config`));
|
|
659
667
|
}
|
|
660
668
|
catch (err) {
|
|
661
669
|
if (options.mcpOnly || proxy) {
|
|
@@ -707,7 +715,7 @@ export async function launchHarness(harness, rawArgs, options) {
|
|
|
707
715
|
field("expires", `${expiresIn}${options.keepKey ? "" : c("dim", " (revoked on exit)")}`),
|
|
708
716
|
budget !== undefined ? field("budget", `${budget.toLocaleString()} tokens`) : undefined,
|
|
709
717
|
field("session", c("bold", sessionId)),
|
|
710
|
-
wantMcp ? field("tools", mcpBanner(mcp, { dryRun: options.dryRun, noTools, chosen })) : undefined,
|
|
718
|
+
wantMcp ? field("tools", mcpBanner(mcp, { dryRun: options.dryRun, noTools, chosen, agent: AGENT_LABELS[harness] })) : undefined,
|
|
711
719
|
hooks?.banner ? field("hooks", hooks.banner) : undefined,
|
|
712
720
|
]
|
|
713
721
|
.filter(Boolean)
|