@agentclientprotocol/codex-acp 2.1.2-preview.1 → 2.1.2-preview.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 +62 -30
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -32448,6 +32448,12 @@ function sanitizeMcpServerName(name) {
|
|
|
32448
32448
|
// src/tool-calls/reporters/McpStartupReporter.ts
|
|
32449
32449
|
import { randomUUID as randomUUID2 } from "node:crypto";
|
|
32450
32450
|
var McpStartupReporter = class {
|
|
32451
|
+
static skipped(serverNames) {
|
|
32452
|
+
return serverNames.map((server) => failure2(
|
|
32453
|
+
server,
|
|
32454
|
+
`[codex-acp] MCP server \`${server}\` was not started, because the Codex config already defines an MCP server with this name. Codex uses its own entry, or no server if that entry is disabled.`
|
|
32455
|
+
));
|
|
32456
|
+
}
|
|
32451
32457
|
static failures(event) {
|
|
32452
32458
|
return [
|
|
32453
32459
|
...event.failed.map((server) => failure2(
|
|
@@ -32497,7 +32503,7 @@ var McpSessionStartup = class {
|
|
|
32497
32503
|
* The promise rejects when the startup fails before `awaitTimeoutMs`. Then the session has no pending startup.
|
|
32498
32504
|
*/
|
|
32499
32505
|
begin(sessionId, mcpServers, afterVersion, options) {
|
|
32500
|
-
const pendingStartup = this.createPendingSession(sessionId, mcpServers, afterVersion);
|
|
32506
|
+
const pendingStartup = this.createPendingSession(sessionId, mcpServers, afterVersion, options.skippedServers ?? []);
|
|
32501
32507
|
if (options.publish) {
|
|
32502
32508
|
this.pendingSessions.set(sessionId, pendingStartup);
|
|
32503
32509
|
}
|
|
@@ -32536,8 +32542,8 @@ var McpSessionStartup = class {
|
|
|
32536
32542
|
publishAsync(sessionId) {
|
|
32537
32543
|
void this.doPublish(sessionId);
|
|
32538
32544
|
}
|
|
32539
|
-
createPendingSession(sessionId, mcpServers, afterVersion) {
|
|
32540
|
-
const requestedServers = new Set(getRequestedMcpServerNames(mcpServers));
|
|
32545
|
+
createPendingSession(sessionId, mcpServers, afterVersion, skippedServers) {
|
|
32546
|
+
const requestedServers = new Set(getRequestedMcpServerNames(mcpServers).filter((server) => !skippedServers.includes(server)));
|
|
32541
32547
|
const abort = new AbortController();
|
|
32542
32548
|
const startup = this.runWithProcessCheck(() => this.codexAcpClient().awaitMcpServerStartup(
|
|
32543
32549
|
Array.from(requestedServers),
|
|
@@ -32546,7 +32552,7 @@ var McpSessionStartup = class {
|
|
|
32546
32552
|
));
|
|
32547
32553
|
void startup.catch(() => {
|
|
32548
32554
|
});
|
|
32549
|
-
return { requestedServers, startup, abort };
|
|
32555
|
+
return { requestedServers, skippedServers, startup, abort };
|
|
32550
32556
|
}
|
|
32551
32557
|
async doPublish(sessionId) {
|
|
32552
32558
|
const pendingStartup = this.pendingSessions.get(sessionId);
|
|
@@ -32558,7 +32564,7 @@ var McpSessionStartup = class {
|
|
|
32558
32564
|
if (!this.isSessionOpen(sessionId) || this.pendingSessions.get(sessionId) !== pendingStartup) {
|
|
32559
32565
|
return;
|
|
32560
32566
|
}
|
|
32561
|
-
await this.publish(sessionId, mcpStartup, pendingStartup
|
|
32567
|
+
await this.publish(sessionId, mcpStartup, pendingStartup);
|
|
32562
32568
|
} catch (err) {
|
|
32563
32569
|
if (!pendingStartup.abort.signal.aborted) {
|
|
32564
32570
|
logger.error(`Failed to publish MCP startup status for session ${sessionId}`, err);
|
|
@@ -32567,7 +32573,8 @@ var McpSessionStartup = class {
|
|
|
32567
32573
|
this.forget(sessionId, pendingStartup);
|
|
32568
32574
|
}
|
|
32569
32575
|
}
|
|
32570
|
-
async publish(sessionId, mcpStartup,
|
|
32576
|
+
async publish(sessionId, mcpStartup, pendingStartup) {
|
|
32577
|
+
const { requestedServers, skippedServers, abort: { signal } } = pendingStartup;
|
|
32571
32578
|
const filteredStartup = {
|
|
32572
32579
|
ready: mcpStartup.ready.filter((server) => requestedServers.has(server)),
|
|
32573
32580
|
failed: mcpStartup.failed.filter((server) => requestedServers.has(server.server)),
|
|
@@ -32587,11 +32594,14 @@ var McpSessionStartup = class {
|
|
|
32587
32594
|
return;
|
|
32588
32595
|
}
|
|
32589
32596
|
const renderer = new AcpToolCallRenderer(this.capabilities());
|
|
32590
|
-
for (const facts4 of
|
|
32591
|
-
...
|
|
32592
|
-
|
|
32593
|
-
|
|
32594
|
-
|
|
32597
|
+
for (const facts4 of [
|
|
32598
|
+
...McpStartupReporter.skipped(skippedServers),
|
|
32599
|
+
...McpStartupReporter.failures({
|
|
32600
|
+
...filteredStartup,
|
|
32601
|
+
ready: readyAfterOauth,
|
|
32602
|
+
failed: failuresAfterOauth
|
|
32603
|
+
})
|
|
32604
|
+
]) {
|
|
32595
32605
|
await this.connection.notify(methods.client.session.update, {
|
|
32596
32606
|
sessionId,
|
|
32597
32607
|
update: renderer.render(facts4)
|
|
@@ -33523,7 +33533,7 @@ var package_default = {
|
|
|
33523
33533
|
publishConfig: {
|
|
33524
33534
|
access: "public"
|
|
33525
33535
|
},
|
|
33526
|
-
version: "2.1.2-preview.
|
|
33536
|
+
version: "2.1.2-preview.2",
|
|
33527
33537
|
description: "",
|
|
33528
33538
|
main: "dist/index.js",
|
|
33529
33539
|
bin: {
|
|
@@ -33797,13 +33807,14 @@ import { createHash } from "node:crypto";
|
|
|
33797
33807
|
async function forkSession(request, additionalDirectories, dependencies) {
|
|
33798
33808
|
await dependencies.refreshSkills(request.cwd, additionalDirectories);
|
|
33799
33809
|
const lastTurnId = await resolveForkTurnId(request, dependencies.codexClient);
|
|
33810
|
+
const sessionConfig = await dependencies.createSessionConfig(
|
|
33811
|
+
request.cwd,
|
|
33812
|
+
additionalDirectories,
|
|
33813
|
+
request.mcpServers ?? []
|
|
33814
|
+
);
|
|
33800
33815
|
const response = await dependencies.codexClient.threadFork({
|
|
33801
33816
|
excludeTurns: true,
|
|
33802
|
-
config:
|
|
33803
|
-
request.cwd,
|
|
33804
|
-
additionalDirectories,
|
|
33805
|
-
request.mcpServers ?? []
|
|
33806
|
-
),
|
|
33817
|
+
config: sessionConfig.config,
|
|
33807
33818
|
cwd: request.cwd,
|
|
33808
33819
|
...lastTurnId !== void 0 && { lastTurnId },
|
|
33809
33820
|
modelProvider: await dependencies.getResumeModelProvider(),
|
|
@@ -33818,7 +33829,8 @@ async function forkSession(request, additionalDirectories, dependencies) {
|
|
|
33818
33829
|
collaborationMode: dependencies.getCollaborationMode(response.thread.id),
|
|
33819
33830
|
modelProvider: response.modelProvider,
|
|
33820
33831
|
currentServiceTier: response.serviceTier ?? null,
|
|
33821
|
-
additionalDirectories
|
|
33832
|
+
additionalDirectories,
|
|
33833
|
+
skippedMcpServers: sessionConfig.skippedMcpServers
|
|
33822
33834
|
};
|
|
33823
33835
|
}
|
|
33824
33836
|
async function resolveForkTurnId(request, codexClient) {
|
|
@@ -34324,9 +34336,10 @@ var CodexAcpClient = class {
|
|
|
34324
34336
|
async resumeSession(request, onSubscribed) {
|
|
34325
34337
|
const additionalDirectories = readAdditionalDirectories(request.cwd, request.additionalDirectories, request._meta);
|
|
34326
34338
|
await this.refreshSkills(request.cwd, additionalDirectories);
|
|
34339
|
+
const sessionConfig = await this.createSessionConfig(request.cwd, additionalDirectories, request.mcpServers ?? []);
|
|
34327
34340
|
const response = await this.resumeThread({
|
|
34328
34341
|
excludeTurns: true,
|
|
34329
|
-
config:
|
|
34342
|
+
config: sessionConfig.config,
|
|
34330
34343
|
cwd: request.cwd,
|
|
34331
34344
|
modelProvider: await this.getResumeModelProvider(),
|
|
34332
34345
|
threadId: request.sessionId
|
|
@@ -34342,7 +34355,8 @@ var CodexAcpClient = class {
|
|
|
34342
34355
|
collaborationMode: response.collaborationMode ?? this.getCollaborationMode(response.thread.id),
|
|
34343
34356
|
modelProvider: response.modelProvider,
|
|
34344
34357
|
currentServiceTier: response.serviceTier ?? null,
|
|
34345
|
-
additionalDirectories
|
|
34358
|
+
additionalDirectories,
|
|
34359
|
+
skippedMcpServers: sessionConfig.skippedMcpServers
|
|
34346
34360
|
};
|
|
34347
34361
|
}
|
|
34348
34362
|
async forkSession(request) {
|
|
@@ -34360,9 +34374,10 @@ var CodexAcpClient = class {
|
|
|
34360
34374
|
async loadSession(request, onSubscribed) {
|
|
34361
34375
|
const additionalDirectories = readAdditionalDirectories(request.cwd, request.additionalDirectories, request._meta);
|
|
34362
34376
|
await this.refreshSkills(request.cwd, additionalDirectories);
|
|
34377
|
+
const sessionConfig = await this.createSessionConfig(request.cwd, additionalDirectories, request.mcpServers ?? []);
|
|
34363
34378
|
const response = await this.resumeThread({
|
|
34364
34379
|
excludeTurns: true,
|
|
34365
|
-
config:
|
|
34380
|
+
config: sessionConfig.config,
|
|
34366
34381
|
cwd: request.cwd,
|
|
34367
34382
|
modelProvider: await this.getResumeModelProvider(),
|
|
34368
34383
|
threadId: request.sessionId
|
|
@@ -34391,7 +34406,8 @@ var CodexAcpClient = class {
|
|
|
34391
34406
|
currentServiceTier: response.serviceTier ?? null,
|
|
34392
34407
|
thread,
|
|
34393
34408
|
history,
|
|
34394
|
-
additionalDirectories
|
|
34409
|
+
additionalDirectories,
|
|
34410
|
+
skippedMcpServers: sessionConfig.skippedMcpServers
|
|
34395
34411
|
};
|
|
34396
34412
|
}
|
|
34397
34413
|
/**
|
|
@@ -34422,8 +34438,9 @@ var CodexAcpClient = class {
|
|
|
34422
34438
|
async newSession(request) {
|
|
34423
34439
|
const additionalDirectories = readAdditionalDirectories(request.cwd, request.additionalDirectories, request._meta);
|
|
34424
34440
|
await this.refreshSkills(request.cwd, additionalDirectories);
|
|
34441
|
+
const sessionConfig = await this.createSessionConfig(request.cwd, additionalDirectories, request.mcpServers);
|
|
34425
34442
|
const response = await this.codexClient.threadStart({
|
|
34426
|
-
config:
|
|
34443
|
+
config: sessionConfig.config,
|
|
34427
34444
|
modelProvider: this.getModelProvider(),
|
|
34428
34445
|
cwd: request.cwd
|
|
34429
34446
|
});
|
|
@@ -34439,7 +34456,8 @@ var CodexAcpClient = class {
|
|
|
34439
34456
|
collaborationMode: this.getCollaborationMode(response.thread.id),
|
|
34440
34457
|
modelProvider: response.modelProvider,
|
|
34441
34458
|
currentServiceTier: response.serviceTier ?? null,
|
|
34442
|
-
additionalDirectories
|
|
34459
|
+
additionalDirectories,
|
|
34460
|
+
skippedMcpServers: sessionConfig.skippedMcpServers
|
|
34443
34461
|
};
|
|
34444
34462
|
}
|
|
34445
34463
|
async closeSession(sessionId) {
|
|
@@ -34543,7 +34561,7 @@ var CodexAcpClient = class {
|
|
|
34543
34561
|
};
|
|
34544
34562
|
const configWithWorkspaceRoots = mergeSandboxWorkspaceWriteRoots(mergedConfig, additionalDirectories);
|
|
34545
34563
|
if (mcpServers.length === 0) {
|
|
34546
|
-
return configWithWorkspaceRoots;
|
|
34564
|
+
return { config: configWithWorkspaceRoots, skippedMcpServers: [] };
|
|
34547
34565
|
}
|
|
34548
34566
|
const requestedServers = mcpServers.map((mcp) => ({
|
|
34549
34567
|
name: sanitizeMcpServerName(mcp.name),
|
|
@@ -34554,12 +34572,22 @@ var CodexAcpClient = class {
|
|
|
34554
34572
|
const existingNames = await this.getConfigMcpServerNames(projectPath);
|
|
34555
34573
|
serversToConfigure = requestedServers.filter((mcp) => !existingNames.has(mcp.name));
|
|
34556
34574
|
}
|
|
34575
|
+
const skippedMcpServers = requestedServers.filter((mcp) => !serversToConfigure.includes(mcp)).map((mcp) => mcp.name);
|
|
34576
|
+
if (skippedMcpServers.length > 0) {
|
|
34577
|
+
logger.log("Skipping requested MCP servers that the Codex config already defines", {
|
|
34578
|
+
projectPath,
|
|
34579
|
+
skippedMcpServers
|
|
34580
|
+
});
|
|
34581
|
+
}
|
|
34557
34582
|
if (serversToConfigure.length === 0) {
|
|
34558
|
-
return configWithWorkspaceRoots;
|
|
34583
|
+
return { config: configWithWorkspaceRoots, skippedMcpServers };
|
|
34559
34584
|
}
|
|
34560
34585
|
return {
|
|
34561
|
-
|
|
34562
|
-
|
|
34586
|
+
config: {
|
|
34587
|
+
...configWithWorkspaceRoots,
|
|
34588
|
+
"mcp_servers": Object.fromEntries(serversToConfigure.map((mcp) => [mcp.name, this.createMcpSeverConfig(mcp.server)]))
|
|
34589
|
+
},
|
|
34590
|
+
skippedMcpServers
|
|
34563
34591
|
};
|
|
34564
34592
|
}
|
|
34565
34593
|
async getConfigMcpServerNames(projectPath) {
|
|
@@ -38644,7 +38672,8 @@ Check ${configPath} and project .codex directories, especially their config.toml
|
|
|
38644
38672
|
if (requestedMcpServers.length > 0 && mcpServerStartupVersion !== null) {
|
|
38645
38673
|
const startupWait = this.mcpSessionStartup.begin(sessionId, requestedMcpServers, mcpServerStartupVersion, {
|
|
38646
38674
|
publish: canPublishSessionUpdates,
|
|
38647
|
-
awaitTimeoutMs: parseMcpStartupAwaitTimeoutMs(request._meta)
|
|
38675
|
+
awaitTimeoutMs: parseMcpStartupAwaitTimeoutMs(request._meta),
|
|
38676
|
+
skippedServers: sessionMetadata.skippedMcpServers
|
|
38648
38677
|
});
|
|
38649
38678
|
if (startupWait !== null) {
|
|
38650
38679
|
try {
|
|
@@ -39842,7 +39871,10 @@ Check ${configPath} and project .codex directories, especially their config.toml
|
|
|
39842
39871
|
}
|
|
39843
39872
|
subscribed = false;
|
|
39844
39873
|
if (requestedMcpServers.length > 0 && mcpServerStartupVersion !== null) {
|
|
39845
|
-
this.mcpSessionStartup.begin(sessionId, requestedMcpServers, mcpServerStartupVersion, {
|
|
39874
|
+
this.mcpSessionStartup.begin(sessionId, requestedMcpServers, mcpServerStartupVersion, {
|
|
39875
|
+
publish: true,
|
|
39876
|
+
skippedServers: sessionMetadata.skippedMcpServers
|
|
39877
|
+
});
|
|
39846
39878
|
}
|
|
39847
39879
|
await this.publishAvailableCommands(sessionState, requestedSessionGeneration);
|
|
39848
39880
|
await this.publishCurrentGoalBestEffort(sessionState, requestedSessionGeneration, true);
|