@agentrq/codex-gateway 0.1.3 → 0.3.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 -168
- package/dist/__tests__/approvals.test.js +152 -0
- package/dist/__tests__/approvals.test.js.map +1 -0
- package/dist/__tests__/elicitation.test.js +136 -0
- package/dist/__tests__/elicitation.test.js.map +1 -0
- package/dist/__tests__/index.test.js +271 -8
- package/dist/__tests__/index.test.js.map +1 -1
- package/dist/approvals.js +168 -0
- package/dist/approvals.js.map +1 -0
- package/dist/codexClient.js.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/elicitation.js +108 -0
- package/dist/elicitation.js.map +1 -0
- package/dist/index.js +170 -72
- package/dist/index.js.map +1 -1
- package/dist/mcpClient.js.map +1 -1
- package/package.json +9 -9
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* elicitation.ts
|
|
3
|
+
*
|
|
4
|
+
* Bridges codex's `mcpServer/elicitation/request` to agentrq's `elicit` MCP
|
|
5
|
+
* tool, so a question an MCP server asks during a turn reaches the human in the
|
|
6
|
+
* dashboard instead of going unanswered.
|
|
7
|
+
*
|
|
8
|
+
* The two protocols line up closely: codex sends
|
|
9
|
+
* `{serverName, threadId, turnId, mode, message, ...}` and expects
|
|
10
|
+
* `{action: "accept" | "decline" | "cancel", content?}` back, which is the same
|
|
11
|
+
* three-action model agentrq's `elicit` tool returns.
|
|
12
|
+
*/
|
|
13
|
+
function firstText(result) {
|
|
14
|
+
const content = result?.content;
|
|
15
|
+
if (!Array.isArray(content))
|
|
16
|
+
return undefined;
|
|
17
|
+
const first = content[0];
|
|
18
|
+
return typeof first?.text === "string" ? first.text : undefined;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Create a task for an elicitation that has no thread to attach to, and mark it
|
|
22
|
+
* ongoing. `elicit` requires a task id, so without this such a question could
|
|
23
|
+
* only be cancelled. Returns the new task's id, or undefined if creation failed.
|
|
24
|
+
*/
|
|
25
|
+
async function createTaskForElicitation(mcpBridge, message) {
|
|
26
|
+
const title = message.length > 80 ? `${message.slice(0, 77)}...` : message;
|
|
27
|
+
try {
|
|
28
|
+
const created = await mcpBridge.callTool("createTask", {
|
|
29
|
+
title: title || "Codex needs an answer",
|
|
30
|
+
body: message,
|
|
31
|
+
assignee: "human",
|
|
32
|
+
});
|
|
33
|
+
const text = firstText(created);
|
|
34
|
+
const taskId = text?.match(/id=(\S+)/)?.[1];
|
|
35
|
+
if (!taskId) {
|
|
36
|
+
console.error(`[codex] Could not parse task ID from createTask response: ${text ?? "<empty>"}`);
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
await mcpBridge.callTool("updateTaskStatus", { taskId, status: "ongoing" });
|
|
40
|
+
return taskId;
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
console.error("[codex] Failed to create task for elicitation:", err);
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Ask the human an MCP server's question via agentrq and translate the answer
|
|
49
|
+
* back into codex's response shape.
|
|
50
|
+
*
|
|
51
|
+
* Every failure path resolves to `cancel` rather than throwing: the human being
|
|
52
|
+
* unreachable is a legitimate outcome of asking, not a protocol error, and
|
|
53
|
+
* codex is blocked on this response either way.
|
|
54
|
+
*/
|
|
55
|
+
export async function resolveElicitation(rawParams, deps) {
|
|
56
|
+
const params = rawParams;
|
|
57
|
+
const message = typeof params?.message === "string" ? params.message : "";
|
|
58
|
+
const mode = params?.mode;
|
|
59
|
+
const serverName = typeof params?.serverName === "string" ? params.serverName : "unknown";
|
|
60
|
+
const toolArgs = { message, mode };
|
|
61
|
+
if (mode === "form") {
|
|
62
|
+
toolArgs.requestedSchema = params?.requestedSchema;
|
|
63
|
+
}
|
|
64
|
+
else if (mode === "url") {
|
|
65
|
+
toolArgs.url = params?.url;
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
console.error(`[codex] Unsupported elicitation mode "${String(mode)}", cancelling`);
|
|
69
|
+
return { action: "cancel" };
|
|
70
|
+
}
|
|
71
|
+
// Prefer the task the thread is already running; otherwise the question has
|
|
72
|
+
// nowhere to land, so raise a task for it.
|
|
73
|
+
let taskId = deps.resolveTaskId(params?.threadId);
|
|
74
|
+
if (!taskId) {
|
|
75
|
+
taskId = await createTaskForElicitation(deps.mcpBridge, message);
|
|
76
|
+
if (!taskId) {
|
|
77
|
+
console.error("[codex] Elicitation has no task and task creation failed, cancelling");
|
|
78
|
+
return { action: "cancel" };
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
toolArgs.taskId = taskId;
|
|
82
|
+
console.error(`\n❓ [codex] Elicitation from ${serverName} (mode=${String(mode)}): ${message}`);
|
|
83
|
+
try {
|
|
84
|
+
const result = await deps.mcpBridge.callTool("elicit", toolArgs);
|
|
85
|
+
const text = firstText(result);
|
|
86
|
+
if (!text) {
|
|
87
|
+
console.error("[codex] Elicit tool returned no content, cancelling");
|
|
88
|
+
return { action: "cancel" };
|
|
89
|
+
}
|
|
90
|
+
if (result.isError) {
|
|
91
|
+
console.error(`[codex] Elicit tool call failed: ${text}`);
|
|
92
|
+
return { action: "cancel" };
|
|
93
|
+
}
|
|
94
|
+
const parsed = JSON.parse(text);
|
|
95
|
+
if (parsed.action === "accept") {
|
|
96
|
+
return { action: "accept", content: parsed.content };
|
|
97
|
+
}
|
|
98
|
+
if (parsed.action === "decline") {
|
|
99
|
+
return { action: "decline" };
|
|
100
|
+
}
|
|
101
|
+
return { action: "cancel" };
|
|
102
|
+
}
|
|
103
|
+
catch (err) {
|
|
104
|
+
console.error("[codex] Failed to process elicitation request:", err);
|
|
105
|
+
return { action: "cancel" };
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=elicitation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elicitation.js","sourceRoot":"","sources":["../src/elicitation.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -7,10 +7,8 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { readFileSync } from "node:fs";
|
|
9
9
|
const pkg = JSON.parse(readFileSync(new URL("../package.json", import.meta.url), "utf-8"));
|
|
10
|
-
import { loadMcpConfig, pickAgentrqServer } from "./config.js";
|
|
11
|
-
import { MCPBridge } from "./mcpClient.js";
|
|
12
|
-
import { CodexClient, } from "./codexClient.js";
|
|
13
10
|
import { extractTaskIdFromMeta, extractTaskIdFromText } from "./taskIdentity.js";
|
|
11
|
+
import { resolveThreadPolicy, ThreadItemRegistry, } from "./approvals.js";
|
|
14
12
|
export function buildTaskPrompt(taskId, content) {
|
|
15
13
|
return [
|
|
16
14
|
`[agentrq task_id: ${taskId}]`,
|
|
@@ -23,65 +21,151 @@ export function buildTaskPrompt(taskId, content) {
|
|
|
23
21
|
content,
|
|
24
22
|
].join("\n");
|
|
25
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* agentrq's own MCP server names, e.g. `agentrq-0cHdAEOUJvN`.
|
|
26
|
+
*/
|
|
27
|
+
const AGENTRQ_PATTERN = /agentrq-[a-zA-Z0-9]{11}/;
|
|
26
28
|
export async function handleTask(content, meta, codexClient, mcpBridge, threadMap, model) {
|
|
27
29
|
const chatId = extractTaskIdFromMeta(meta);
|
|
28
30
|
let threadId = chatId ? threadMap.get(chatId) : undefined;
|
|
29
31
|
if (!threadId) {
|
|
30
|
-
const
|
|
32
|
+
const policy = resolveThreadPolicy();
|
|
33
|
+
for (const warning of policy.warnings) {
|
|
34
|
+
console.error(`\n⚠️ [codex] ${warning}`);
|
|
35
|
+
}
|
|
31
36
|
const threadParams = {
|
|
32
37
|
cwd: process.cwd(),
|
|
33
|
-
|
|
38
|
+
approvalPolicy: policy.approvalPolicy,
|
|
39
|
+
sandbox: policy.sandbox,
|
|
34
40
|
};
|
|
35
41
|
if (model)
|
|
36
42
|
threadParams.model = model;
|
|
37
43
|
threadId = await codexClient.startThread(threadParams);
|
|
38
44
|
if (chatId)
|
|
39
45
|
threadMap.set(chatId, threadId);
|
|
40
|
-
console.error(`[codex] Created thread ${threadId} for chat ${chatId ?? "unknown"}`
|
|
46
|
+
console.error(`[codex] Created thread ${threadId} for chat ${chatId ?? "unknown"} ` +
|
|
47
|
+
`(approvalPolicy=${policy.approvalPolicy}, sandbox=${policy.sandbox})`);
|
|
41
48
|
}
|
|
42
49
|
else {
|
|
43
50
|
console.error(`[codex] Reusing thread ${threadId} for chat ${chatId}`);
|
|
44
51
|
}
|
|
45
52
|
const taskContent = chatId ? buildTaskPrompt(chatId, content) : content;
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
// Auto-allow agentrq MCP tool calls (same pattern as acp-gateway)
|
|
54
|
-
const isAgentrqTool = AGENTRQ_PATTERN.test(toolTitle) || AGENTRQ_PATTERN.test(connectorId) || AGENTRQ_PATTERN.test(reason);
|
|
55
|
-
if (isAgentrqTool) {
|
|
56
|
-
console.error(`\n🔓 [codex] Auto-allowing agentrq tool: ${toolTitle || reason}`);
|
|
57
|
-
codexClient._sendResponse(data.id, { decision: "acceptForSession" });
|
|
53
|
+
// Approval requests name their subject only by `itemId`; the command or tool
|
|
54
|
+
// itself was announced earlier in an `item/started` notification. Track those
|
|
55
|
+
// so the human sees what they are actually approving.
|
|
56
|
+
const registry = new ThreadItemRegistry();
|
|
57
|
+
const onItemStarted = (params) => {
|
|
58
|
+
const p = params;
|
|
59
|
+
if (p?.threadId !== threadId)
|
|
58
60
|
return;
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
61
|
+
registry.record(p?.item);
|
|
62
|
+
};
|
|
63
|
+
const onItemCompleted = (params) => {
|
|
64
|
+
const p = params;
|
|
65
|
+
if (p?.threadId !== threadId)
|
|
66
|
+
return;
|
|
67
|
+
const item = p?.item;
|
|
68
|
+
registry.forget(item?.id);
|
|
69
|
+
};
|
|
70
|
+
// Verdicts arrive on a single bridge-wide event. Keep the waiters keyed by
|
|
71
|
+
// request id and tear them all down when the turn ends, so a handler never
|
|
72
|
+
// outlives its turn and every in-flight request still gets an answer.
|
|
73
|
+
const pendingVerdicts = new Map();
|
|
74
|
+
const onVerdict = (verdict) => {
|
|
75
|
+
const resolve = pendingVerdicts.get(verdict.requestId);
|
|
76
|
+
if (!resolve)
|
|
77
|
+
return;
|
|
78
|
+
pendingVerdicts.delete(verdict.requestId);
|
|
79
|
+
const decision = verdict.behavior === "allow" ? "allow" : "deny";
|
|
80
|
+
console.error(`✅ [codex] Permission verdict: ${verdict.behavior} → ${decision}`);
|
|
81
|
+
resolve(decision);
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* Describe an approval request, preferring the remembered item over the
|
|
85
|
+
* sparse fields the request itself carries.
|
|
86
|
+
*/
|
|
87
|
+
const describeApproval = (params, fallbackTitle) => {
|
|
88
|
+
const reason = typeof params?.reason === "string" ? params.reason : "";
|
|
89
|
+
const remembered = registry.get(params?.itemId);
|
|
90
|
+
if (remembered)
|
|
91
|
+
return { ...remembered, reason };
|
|
92
|
+
// The item was never seen (or carried nothing describable) — fall back to
|
|
93
|
+
// whatever is on the request itself.
|
|
94
|
+
const command = typeof params?.command === "string" ? params.command : "";
|
|
95
|
+
return {
|
|
96
|
+
title: command || reason || fallbackTitle,
|
|
97
|
+
inputPreview: command,
|
|
98
|
+
reason,
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* Auto-allow agentrq's own MCP tool calls, which the gateway itself depends
|
|
103
|
+
* on and which the human already implicitly approved by assigning the task.
|
|
104
|
+
*
|
|
105
|
+
* Deliberately keyed on the MCP server name alone. Matching free text such as
|
|
106
|
+
* a command line or a `reason` would let any command that merely mentions a
|
|
107
|
+
* workspace id approve itself.
|
|
108
|
+
*/
|
|
109
|
+
const isAgentrqToolCall = (ctx) => ctx.server !== undefined && AGENTRQ_PATTERN.test(ctx.server);
|
|
110
|
+
/** Forward an approval to agentrq and wait for the human's verdict. */
|
|
111
|
+
const routeToHuman = async (requestId, ctx) => {
|
|
112
|
+
const decided = new Promise((resolve) => pendingVerdicts.set(requestId, resolve));
|
|
62
113
|
try {
|
|
63
114
|
await mcpBridge.sendNotification("notifications/claude/channel/permission_request", {
|
|
64
115
|
request_id: requestId,
|
|
65
|
-
tool_name:
|
|
66
|
-
description: reason,
|
|
67
|
-
input_preview:
|
|
116
|
+
tool_name: ctx.title,
|
|
117
|
+
description: ctx.reason || ctx.title,
|
|
118
|
+
input_preview: ctx.inputPreview,
|
|
68
119
|
});
|
|
69
120
|
}
|
|
70
121
|
catch (err) {
|
|
71
122
|
console.error("[codex] Failed to forward permission request:", err);
|
|
72
|
-
|
|
73
|
-
return;
|
|
123
|
+
pendingVerdicts.delete(requestId);
|
|
124
|
+
return "deny";
|
|
74
125
|
}
|
|
75
126
|
console.error("⌛ [codex] Waiting for human approval in agentrq dashboard...");
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
127
|
+
return decided;
|
|
128
|
+
};
|
|
129
|
+
const nextRequestId = (id) => `codex-approval-${id}-${Date.now()}`;
|
|
130
|
+
const onCommandApproval = async (data) => {
|
|
131
|
+
const params = data.params;
|
|
132
|
+
const ctx = describeApproval(params, "Command execution");
|
|
133
|
+
if (isAgentrqToolCall(ctx)) {
|
|
134
|
+
console.error(`\n🔓 [codex] Auto-allowing agentrq tool: ${ctx.title}`);
|
|
135
|
+
codexClient._sendResponse(data.id, { decision: "acceptForSession" });
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
console.error(`\n🔐 [codex] Approval requested (command): ${ctx.title}`);
|
|
139
|
+
const decision = await routeToHuman(nextRequestId(data.id), ctx);
|
|
140
|
+
codexClient._sendResponse(data.id, {
|
|
141
|
+
decision: decision === "allow" ? "accept" : "decline",
|
|
142
|
+
});
|
|
143
|
+
};
|
|
144
|
+
const onFileChangeApproval = async (data) => {
|
|
145
|
+
const params = data.params;
|
|
146
|
+
const ctx = describeApproval(params, "File change");
|
|
147
|
+
console.error(`\n🔐 [codex] Approval requested (file change): ${ctx.title}`);
|
|
148
|
+
const decision = await routeToHuman(nextRequestId(data.id), ctx);
|
|
149
|
+
codexClient._sendResponse(data.id, {
|
|
150
|
+
decision: decision === "allow" ? "accept" : "decline",
|
|
151
|
+
});
|
|
152
|
+
};
|
|
153
|
+
const onPermissionsApproval = async (data) => {
|
|
154
|
+
const params = data.params;
|
|
155
|
+
const requested = params?.permissions;
|
|
156
|
+
const ctx = describeApproval(params, "Additional permissions");
|
|
157
|
+
if (!registry.get(params?.itemId)) {
|
|
158
|
+
ctx.inputPreview = JSON.stringify(requested ?? {});
|
|
159
|
+
}
|
|
160
|
+
console.error(`\n🔐 [codex] Approval requested (permissions): ${ctx.title}`);
|
|
161
|
+
const decision = await routeToHuman(nextRequestId(data.id), ctx);
|
|
162
|
+
// GrantedPermissionProfile mirrors the requested profile, and has no
|
|
163
|
+
// required fields — granting nothing denies the escalation while leaving
|
|
164
|
+
// the turn free to continue inside its existing sandbox.
|
|
165
|
+
codexClient._sendResponse(data.id, {
|
|
166
|
+
permissions: decision === "allow" ? (requested ?? {}) : {},
|
|
167
|
+
scope: "turn",
|
|
168
|
+
});
|
|
85
169
|
};
|
|
86
170
|
let replyText = "";
|
|
87
171
|
const onDelta = (params) => {
|
|
@@ -90,7 +174,12 @@ export async function handleTask(content, meta, codexClient, mcpBridge, threadMa
|
|
|
90
174
|
process.stdout.write(params.delta);
|
|
91
175
|
}
|
|
92
176
|
};
|
|
93
|
-
|
|
177
|
+
mcpBridge.on("verdict", onVerdict);
|
|
178
|
+
codexClient.on("notification:item/started", onItemStarted);
|
|
179
|
+
codexClient.on("notification:item/completed", onItemCompleted);
|
|
180
|
+
codexClient.on("server-request:item/commandExecution/requestApproval", onCommandApproval);
|
|
181
|
+
codexClient.on("server-request:item/fileChange/requestApproval", onFileChangeApproval);
|
|
182
|
+
codexClient.on("server-request:item/permissions/requestApproval", onPermissionsApproval);
|
|
94
183
|
codexClient.on("notification:item/agentMessage/delta", onDelta);
|
|
95
184
|
try {
|
|
96
185
|
const turnId = await codexClient.startTurn(threadId, taskContent, model);
|
|
@@ -102,8 +191,19 @@ export async function handleTask(content, meta, codexClient, mcpBridge, threadMa
|
|
|
102
191
|
console.error("[codex] Turn error:", err);
|
|
103
192
|
}
|
|
104
193
|
finally {
|
|
105
|
-
|
|
194
|
+
mcpBridge.off("verdict", onVerdict);
|
|
195
|
+
codexClient.off("notification:item/started", onItemStarted);
|
|
196
|
+
codexClient.off("notification:item/completed", onItemCompleted);
|
|
197
|
+
codexClient.off("server-request:item/commandExecution/requestApproval", onCommandApproval);
|
|
198
|
+
codexClient.off("server-request:item/fileChange/requestApproval", onFileChangeApproval);
|
|
199
|
+
codexClient.off("server-request:item/permissions/requestApproval", onPermissionsApproval);
|
|
106
200
|
codexClient.off("notification:item/agentMessage/delta", onDelta);
|
|
201
|
+
// The turn is over; anything still waiting on a human will never be
|
|
202
|
+
// answered, so deny it rather than leaving codex blocked on a response.
|
|
203
|
+
for (const resolve of pendingVerdicts.values())
|
|
204
|
+
resolve("deny");
|
|
205
|
+
pendingVerdicts.clear();
|
|
206
|
+
registry.clear();
|
|
107
207
|
}
|
|
108
208
|
if (replyText.trim() && chatId) {
|
|
109
209
|
try {
|
|
@@ -118,6 +218,16 @@ export async function handleTask(content, meta, codexClient, mcpBridge, threadMa
|
|
|
118
218
|
console.error("[codex] No reply text to send");
|
|
119
219
|
}
|
|
120
220
|
}
|
|
221
|
+
/** Find the agentrq chat/task a codex thread was started for. */
|
|
222
|
+
export function findChatIdForThread(threadMap, threadId) {
|
|
223
|
+
if (typeof threadId !== "string")
|
|
224
|
+
return undefined;
|
|
225
|
+
for (const [chatId, mapped] of threadMap) {
|
|
226
|
+
if (mapped === threadId)
|
|
227
|
+
return chatId;
|
|
228
|
+
}
|
|
229
|
+
return undefined;
|
|
230
|
+
}
|
|
121
231
|
export async function checkForNextTask(mcpBridge, codexClient, threadMap, model) {
|
|
122
232
|
console.error("[bridge] Checking for next task via MCP server...");
|
|
123
233
|
try {
|
|
@@ -147,42 +257,30 @@ export async function checkForNextTask(mcpBridge, codexClient, threadMap, model)
|
|
|
147
257
|
console.error("[bridge] Failed to check for next task:", err);
|
|
148
258
|
}
|
|
149
259
|
}
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
}
|
|
173
|
-
catch (err) {
|
|
174
|
-
console.error("[bridge] Error handling task:", err);
|
|
175
|
-
}
|
|
176
|
-
});
|
|
177
|
-
// Initial check for pending tasks
|
|
178
|
-
await checkForNextTask(mcpBridge, codexClient, threadMap, model);
|
|
179
|
-
// Keep the process alive
|
|
180
|
-
await new Promise(() => { });
|
|
260
|
+
/**
|
|
261
|
+
* The gateway itself is gone: @agentrq/codex-gateway is deprecated in favour of
|
|
262
|
+
* @agentrq/acp-gateway, which drives Codex through the codex-acp agent. The CLI
|
|
263
|
+
* now only points people at the replacement and exits non-zero, so anything
|
|
264
|
+
* still invoking it fails loudly instead of silently doing nothing.
|
|
265
|
+
*/
|
|
266
|
+
function main() {
|
|
267
|
+
console.error([
|
|
268
|
+
"",
|
|
269
|
+
` ${pkg.name} v${pkg.version} is DEPRECATED and no longer runs.`,
|
|
270
|
+
"",
|
|
271
|
+
" Use @agentrq/acp-gateway, which runs Codex via the codex-acp agent:",
|
|
272
|
+
"",
|
|
273
|
+
" npx @agentrq/acp-gateway@latest --login --agent codex-acp",
|
|
274
|
+
" npx @agentrq/acp-gateway@latest --agent codex-acp",
|
|
275
|
+
"",
|
|
276
|
+
" More details:",
|
|
277
|
+
" Repository: https://github.com/agentrq/acp-gateway",
|
|
278
|
+
" Setup guide: https://agentrq.com/docs/connect-codex-gateway",
|
|
279
|
+
"",
|
|
280
|
+
].join("\n"));
|
|
281
|
+
process.exit(1);
|
|
181
282
|
}
|
|
182
283
|
if (process.env.NODE_ENV !== "test") {
|
|
183
|
-
main()
|
|
184
|
-
console.error("[fatal]", err);
|
|
185
|
-
process.exit(1);
|
|
186
|
-
});
|
|
284
|
+
main();
|
|
187
285
|
}
|
|
188
286
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,YAAY,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/mcpClient.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcpClient.js","sourceRoot":"","sources":["../src/mcpClient.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,OAAO,SAAU,SAAQ,YAAY;IAWrB;
|
|
1
|
+
{"version":3,"file":"mcpClient.js","sourceRoot":"","sources":["../src/mcpClient.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,OAAO,SAAU,SAAQ,YAAY;IAWrB,MAAM;IAVlB,MAAM,GAAkB,IAAI,CAAC;IAC7B,SAAS,GAAyC,IAAI,CAAC;IACvD,WAAW,GAAG,KAAK,CAAC;IACpB,YAAY,GAAG,KAAK,CAAC;IACrB,QAAQ,GAAG,KAAK,CAAC;IAElB,YAAY;QACjB,OAAQ,IAAI,CAAC,SAAiB,EAAE,UAAU,CAAC;IAC7C,CAAC;IAED,YAAoB,MAAuB;QACzC,KAAK,EAAE,CAAC;sBADU,MAAM;QAExB,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,cAAc,MAAM,CAAC,IAAI,aAAa,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAClD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QAEtB,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,MAAM,YAAY,GAAG,IAAI,CAAC;QAC1B,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,aAAa;QAEtC,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3C,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBACxB,OAAO,CAAC,KAAK,CAAC,sBAAsB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAC1D,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,IAAI,IAAI,CAAC,QAAQ;oBAAE,MAAM;gBACzB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;gBACtE,OAAO,CAAC,KAAK,CACX,8BAA8B,IAAI,CAAC,MAAM,CAAC,IAAI,aAAa,OAAO,GAAG,CAAC,MAAM,KAAK,CAAC,OAAO,IAAI,KAAK,iBAAiB,KAAK,GAAG,IAAI,MAAM,CACtI,CAAC;gBACF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC3D,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,CAAC;IAEO,KAAK,CAAC,YAAY;QACxB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC;YACnC,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAC1C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,IAAI,6BAA6B,CAAC,GAAG,EAAE;YACtD,mBAAmB,EAAE;gBACnB,UAAU,EAAE,GAAG;gBACf,wBAAwB,EAAE,IAAI;gBAC9B,oBAAoB,EAAE,MAAM;gBAC5B,2BAA2B,EAAE,CAAC;aAC/B;SACF,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CACtB;YACE,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,OAAO;SACjB,EACD;YACE,YAAY,EAAE,EAAE;SACjB,CACF,CAAC;QAEF,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,GAAG,EAAE;YAC5B,OAAO,CAAC,KAAK,CAAC,uBAAuB,IAAI,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,CAAC;YAC/D,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC,CAAC;QAEF,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE;YACjC,MAAM,GAAG,GAAG,KAAK,EAAE,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5C,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;YAE7C,IAAI,GAAG,CAAC,QAAQ,CAAC,gCAAgC,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBAChF,OAAO,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;gBAChF,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;gBACzB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBACnB,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC;oBACnC,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC;oBACnC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBACzC,CAAC;gBACD,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE1C,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAChC,CAAC,CAAC,MAAM,CAAC;YACP,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,8BAA8B,CAAC;YACjD,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;gBACf,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;gBACnB,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;aACzB,CAAC;SACH,CAAC,EACF,CAAC,YAAY,EAAE,EAAE;YACf,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;YACrD,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC;YAC9C,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,CAAC,CACF,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAChC,CAAC,CAAC,MAAM,CAAC;YACP,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,yCAAyC,CAAC;YAC5D,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;gBACf,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;gBACtB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;aACrB,CAAC;SACH,CAAC,EACF,CAAC,YAAY,EAAE,EAAE;YACf,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACnD,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC;YACrD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5D,CAAC,CACF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,eAAe;QAC3B,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAC7B,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC3B,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,GAAG,CAAC,CAAC;YAChE,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,MAAM,GAAG,KAAK,EAAE,CAAC;YAC3C,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YACzD,MAAM,IAAI,GAAG,CAAC;QAChB,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAY,EAAE,IAAI,GAAQ,EAAE;QACzC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChE,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;YAChC,IAAI;YACJ,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,MAAc,EAAE,MAAW;QAChD,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChE,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;YAC7B,MAAM;YACN,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC;YACnC,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAC1C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,CAAC;IACH,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentrq/codex-gateway",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "MCP bridge CLI for agentrq workspaces using OpenAI Codex",
|
|
3
|
+
"version": "0.3.0",
|
|
4
|
+
"description": "DEPRECATED - use @agentrq/acp-gateway with --agent codex-acp. MCP bridge CLI for agentrq workspaces using OpenAI Codex",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"publishConfig": {
|
|
7
7
|
"access": "public",
|
|
@@ -40,14 +40,14 @@
|
|
|
40
40
|
"agentrq"
|
|
41
41
|
],
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@modelcontextprotocol/sdk": "^1.
|
|
44
|
-
"zod": "^3.
|
|
43
|
+
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
44
|
+
"zod": "^3.25.0"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
|
-
"@types/node": "^22",
|
|
48
|
-
"@vitest/coverage-v8": "^4.1.
|
|
49
|
-
"tsx": "^4.
|
|
50
|
-
"typescript": "^
|
|
51
|
-
"vitest": "^4.1.
|
|
47
|
+
"@types/node": "^22.20.1",
|
|
48
|
+
"@vitest/coverage-v8": "^4.1.11",
|
|
49
|
+
"tsx": "^4.23.12",
|
|
50
|
+
"typescript": "^7.0.2",
|
|
51
|
+
"vitest": "^4.1.11"
|
|
52
52
|
}
|
|
53
53
|
}
|