@agentconnect.md/codex-acp 1.12.0-agentconnect.1 → 1.12.0-agentconnect.2
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/dist/index.js +27 -26
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -26559,14 +26559,14 @@ function userInputResponseValue(content, fieldId) {
|
|
|
26559
26559
|
return value;
|
|
26560
26560
|
}
|
|
26561
26561
|
var CodexElicitationHandler = class {
|
|
26562
|
-
constructor(connection, permissionContext, clientCapabilities = null, cancellationSignal,
|
|
26563
|
-
this.
|
|
26562
|
+
constructor(connection, permissionContext, clientCapabilities = null, cancellationSignal, fullAccessApprovedServers) {
|
|
26563
|
+
this.fullAccessApprovedServers = fullAccessApprovedServers;
|
|
26564
26564
|
this.connection = connection;
|
|
26565
26565
|
this.permissionContext = permissionContext;
|
|
26566
26566
|
this.clientCapabilities = clientCapabilities;
|
|
26567
26567
|
this.cancellationSignal = cancellationSignal;
|
|
26568
26568
|
}
|
|
26569
|
-
|
|
26569
|
+
fullAccessApprovedServers;
|
|
26570
26570
|
connection;
|
|
26571
26571
|
permissionContext;
|
|
26572
26572
|
clientCapabilities;
|
|
@@ -26585,9 +26585,9 @@ var CodexElicitationHandler = class {
|
|
|
26585
26585
|
async handleElicitation(params) {
|
|
26586
26586
|
try {
|
|
26587
26587
|
const context = this.createMcpElicitationContext(params);
|
|
26588
|
-
const
|
|
26589
|
-
if (
|
|
26590
|
-
const accepted = !this.cancellationSignal?.aborted && params.mode === "form" && context.isToolApproval && context.persistOptions.has("session") &&
|
|
26588
|
+
const approvedServers = this.fullAccessApprovedServers?.(params);
|
|
26589
|
+
if (approvedServers !== void 0) {
|
|
26590
|
+
const accepted = !this.cancellationSignal?.aborted && params.mode === "form" && context.isToolApproval && context.persistOptions.has("session") && approvedServers.has(params.serverName);
|
|
26591
26591
|
await this.publishAcceptedMcpToolApproval(params.threadId, context, accepted);
|
|
26592
26592
|
return { action: accepted ? "accept" : "cancel", content: accepted ? {} : null, _meta: null };
|
|
26593
26593
|
}
|
|
@@ -26654,7 +26654,7 @@ var CodexElicitationHandler = class {
|
|
|
26654
26654
|
}
|
|
26655
26655
|
}
|
|
26656
26656
|
async handleUserInput(params) {
|
|
26657
|
-
if (this.
|
|
26657
|
+
if (this.fullAccessApprovedServers?.(params) !== void 0 && params.itemId === `mcp-deps-${params.turnId}` && params.questions.some((question) => question.id === "skill_mcp_dependency_install")) {
|
|
26658
26658
|
return { answers: {} };
|
|
26659
26659
|
}
|
|
26660
26660
|
if (!clientSupportsFormElicitation(this.clientCapabilities)) {
|
|
@@ -27819,7 +27819,7 @@ var package_default = {
|
|
|
27819
27819
|
publishConfig: {
|
|
27820
27820
|
access: "public"
|
|
27821
27821
|
},
|
|
27822
|
-
version: "1.12.0-agentconnect.
|
|
27822
|
+
version: "1.12.0-agentconnect.2",
|
|
27823
27823
|
description: "",
|
|
27824
27824
|
main: "dist/index.js",
|
|
27825
27825
|
bin: {
|
|
@@ -28110,7 +28110,7 @@ async function forkSession(request, additionalDirectories, dependencies) {
|
|
|
28110
28110
|
modelProvider: response.modelProvider,
|
|
28111
28111
|
currentServiceTier: response.serviceTier ?? null,
|
|
28112
28112
|
additionalDirectories,
|
|
28113
|
-
|
|
28113
|
+
fullAccessApprovedMcpServers: prepared.fullAccessApprovedMcpServers
|
|
28114
28114
|
};
|
|
28115
28115
|
}
|
|
28116
28116
|
async function resolveForkTurnId(request, codexClient) {
|
|
@@ -28569,7 +28569,7 @@ var CodexAcpClient = class {
|
|
|
28569
28569
|
const initialAgentMode = AgentMode.getInitialAgentMode();
|
|
28570
28570
|
await this.refreshSkills(request.cwd, additionalDirectories);
|
|
28571
28571
|
const prepared = await this.createSessionConfig(request.cwd, additionalDirectories, request.mcpServers ?? []);
|
|
28572
|
-
await this.
|
|
28572
|
+
await this.restrictResumedMcpServers(request.sessionId, prepared);
|
|
28573
28573
|
const response = await this.codexClient.threadResume({
|
|
28574
28574
|
excludeTurns: true,
|
|
28575
28575
|
config: prepared.config,
|
|
@@ -28589,7 +28589,7 @@ var CodexAcpClient = class {
|
|
|
28589
28589
|
modelProvider: response.modelProvider,
|
|
28590
28590
|
currentServiceTier: response.serviceTier ?? null,
|
|
28591
28591
|
additionalDirectories,
|
|
28592
|
-
|
|
28592
|
+
fullAccessApprovedMcpServers: prepared.fullAccessApprovedMcpServers
|
|
28593
28593
|
};
|
|
28594
28594
|
}
|
|
28595
28595
|
async forkSession(request) {
|
|
@@ -28609,7 +28609,7 @@ var CodexAcpClient = class {
|
|
|
28609
28609
|
const initialAgentMode = AgentMode.getInitialAgentMode();
|
|
28610
28610
|
await this.refreshSkills(request.cwd, additionalDirectories);
|
|
28611
28611
|
const prepared = await this.createSessionConfig(request.cwd, additionalDirectories, request.mcpServers ?? []);
|
|
28612
|
-
await this.
|
|
28612
|
+
await this.restrictResumedMcpServers(request.sessionId, prepared);
|
|
28613
28613
|
const response = await this.codexClient.threadResume({
|
|
28614
28614
|
excludeTurns: true,
|
|
28615
28615
|
config: prepared.config,
|
|
@@ -28634,7 +28634,7 @@ var CodexAcpClient = class {
|
|
|
28634
28634
|
currentServiceTier: response.serviceTier ?? null,
|
|
28635
28635
|
thread,
|
|
28636
28636
|
additionalDirectories,
|
|
28637
|
-
|
|
28637
|
+
fullAccessApprovedMcpServers: prepared.fullAccessApprovedMcpServers
|
|
28638
28638
|
};
|
|
28639
28639
|
}
|
|
28640
28640
|
async readSessionThread(sessionId) {
|
|
@@ -28664,7 +28664,7 @@ var CodexAcpClient = class {
|
|
|
28664
28664
|
modelProvider: response.modelProvider,
|
|
28665
28665
|
currentServiceTier: response.serviceTier ?? null,
|
|
28666
28666
|
additionalDirectories,
|
|
28667
|
-
|
|
28667
|
+
fullAccessApprovedMcpServers: prepared.fullAccessApprovedMcpServers
|
|
28668
28668
|
};
|
|
28669
28669
|
}
|
|
28670
28670
|
async closeSession(sessionId) {
|
|
@@ -28691,10 +28691,10 @@ var CodexAcpClient = class {
|
|
|
28691
28691
|
if (!this.isProtectedFullAccess(agentMode)) return agentMode.approvalPolicy;
|
|
28692
28692
|
return { granular: { sandbox_approval: false, rules: false, skill_approval: false, request_permissions: false, mcp_elicitations: false } };
|
|
28693
28693
|
}
|
|
28694
|
-
async
|
|
28695
|
-
if (prepared.
|
|
28694
|
+
async restrictResumedMcpServers(sessionId, prepared) {
|
|
28695
|
+
if (prepared.fullAccessApprovedMcpServers.length === 0) return;
|
|
28696
28696
|
const loaded = await this.codexClient.threadLoadedList({});
|
|
28697
|
-
if (loaded.data.includes(sessionId) || loaded.nextCursor !== null) prepared.
|
|
28697
|
+
if (loaded.data.includes(sessionId) || loaded.nextCursor !== null) prepared.fullAccessApprovedMcpServers = [];
|
|
28698
28698
|
}
|
|
28699
28699
|
async deleteSession(sessionId) {
|
|
28700
28700
|
await this.codexClient.threadArchive({ threadId: sessionId });
|
|
@@ -28780,7 +28780,7 @@ var CodexAcpClient = class {
|
|
|
28780
28780
|
};
|
|
28781
28781
|
const configWithWorkspaceRoots = mergeSandboxWorkspaceWriteRoots(mergedConfig, additionalDirectories);
|
|
28782
28782
|
if (mcpServers.length === 0) {
|
|
28783
|
-
return { config: configWithWorkspaceRoots,
|
|
28783
|
+
return { config: configWithWorkspaceRoots, fullAccessApprovedMcpServers: [] };
|
|
28784
28784
|
}
|
|
28785
28785
|
const requestedServers = mcpServers.map((mcp) => ({
|
|
28786
28786
|
name: sanitizeMcpServerName(mcp.name),
|
|
@@ -28792,13 +28792,14 @@ var CodexAcpClient = class {
|
|
|
28792
28792
|
serversToConfigure = requestedServers.filter((mcp) => !existingNames.has(mcp.name));
|
|
28793
28793
|
}
|
|
28794
28794
|
if (serversToConfigure.length === 0) {
|
|
28795
|
-
return { config: configWithWorkspaceRoots,
|
|
28795
|
+
return { config: configWithWorkspaceRoots, fullAccessApprovedMcpServers: [] };
|
|
28796
28796
|
}
|
|
28797
28797
|
const configuredServers = Object.fromEntries(serversToConfigure.map((mcp) => [mcp.name, this.createMcpSeverConfig(mcp.server)]));
|
|
28798
28798
|
const inheritedServers = isJsonObject(this.config["mcp_servers"]) ? this.config["mcp_servers"] : {};
|
|
28799
28799
|
return {
|
|
28800
28800
|
config: { ...configWithWorkspaceRoots, mcp_servers: configuredServers },
|
|
28801
|
-
|
|
28801
|
+
// Every server the launcher injected, on any transport; a name any config layer also declares is never approved, so session config cannot borrow a launcher's name.
|
|
28802
|
+
fullAccessApprovedMcpServers: this.permissionProfileConfig ? Object.keys(configuredServers).filter((name) => !existingNames.has(name) && !Object.hasOwn(inheritedServers, name)) : []
|
|
28802
28803
|
};
|
|
28803
28804
|
}
|
|
28804
28805
|
async getConfigMcpServerNames(projectPath) {
|
|
@@ -32713,7 +32714,7 @@ Check ${configPath} and project .codex directories, especially their config.toml
|
|
|
32713
32714
|
supportedReasoningEfforts: currentModel?.supportedReasoningEfforts ?? [],
|
|
32714
32715
|
supportedInputModalities: currentModel?.inputModalities ?? ["text", "image"],
|
|
32715
32716
|
agentMode: AgentMode.getInitialAgentMode(),
|
|
32716
|
-
|
|
32717
|
+
fullAccessApprovedMcpServers: sessionMetadata.fullAccessApprovedMcpServers ?? [],
|
|
32717
32718
|
collaborationMode: sessionMetadata.collaborationMode,
|
|
32718
32719
|
currentTurnId: null,
|
|
32719
32720
|
lastTokenUsage: null,
|
|
@@ -33053,7 +33054,7 @@ Check ${configPath} and project .codex directories, especially their config.toml
|
|
|
33053
33054
|
additionalDirectories: session.additionalDirectories,
|
|
33054
33055
|
mcpServers: session.mcpServers ?? []
|
|
33055
33056
|
});
|
|
33056
|
-
session.
|
|
33057
|
+
session.fullAccessApprovedMcpServers = metadata.fullAccessApprovedMcpServers ?? [];
|
|
33057
33058
|
session.authProvider = replacement.getModelProvider();
|
|
33058
33059
|
session.asyncTasks.refresh();
|
|
33059
33060
|
logger.log("Resumed session after provider restart", { sessionId: session.sessionId });
|
|
@@ -33785,7 +33786,7 @@ Check ${configPath} and project .codex directories, especially their config.toml
|
|
|
33785
33786
|
supportedReasoningEfforts: currentModel?.supportedReasoningEfforts ?? [],
|
|
33786
33787
|
supportedInputModalities: currentModel?.inputModalities ?? ["text", "image"],
|
|
33787
33788
|
agentMode: AgentMode.getInitialAgentMode(),
|
|
33788
|
-
|
|
33789
|
+
fullAccessApprovedMcpServers: sessionMetadata.fullAccessApprovedMcpServers ?? [],
|
|
33789
33790
|
collaborationMode: sessionMetadata.collaborationMode,
|
|
33790
33791
|
currentTurnId: null,
|
|
33791
33792
|
lastTokenUsage: null,
|
|
@@ -34529,8 +34530,8 @@ Check ${configPath} and project .codex directories, especially their config.toml
|
|
|
34529
34530
|
const permissionContext = permissionLifecycle.beginPrompt();
|
|
34530
34531
|
let promptAgentMode;
|
|
34531
34532
|
let permissionModeRevision;
|
|
34532
|
-
const
|
|
34533
|
-
const
|
|
34533
|
+
const approvedServers = new Set(sessionState.fullAccessApprovedMcpServers);
|
|
34534
|
+
const noApprovedServers = /* @__PURE__ */ new Set();
|
|
34534
34535
|
let mcpApprovalTurnId = null;
|
|
34535
34536
|
const isProtectedFullAccess = () => this.codexAcpClient.isProtectedFullAccess(promptAgentMode ?? sessionState.agentMode);
|
|
34536
34537
|
const approvalHandler = new CodexApprovalHandler(
|
|
@@ -34546,7 +34547,7 @@ Check ${configPath} and project .codex directories, especially their config.toml
|
|
|
34546
34547
|
activePrompt.signal,
|
|
34547
34548
|
(request) => {
|
|
34548
34549
|
if (!isProtectedFullAccess()) return void 0;
|
|
34549
|
-
return mcpApprovalTurnId !== null && request.turnId === mcpApprovalTurnId && sessionState.agentMode.kind === "full_access" && sessionState.permissionModeRevision === permissionModeRevision ?
|
|
34550
|
+
return mcpApprovalTurnId !== null && request.turnId === mcpApprovalTurnId && sessionState.agentMode.kind === "full_access" && sessionState.permissionModeRevision === permissionModeRevision ? approvedServers : noApprovedServers;
|
|
34550
34551
|
}
|
|
34551
34552
|
);
|
|
34552
34553
|
const observeInteraction = async (event) => {
|