acpx 0.19.6 → 0.21.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.
Files changed (39) hide show
  1. package/dist/{agent-registry-kHdpsK9F.js → agent-registry-Gtwn7nMp.js} +9 -1
  2. package/dist/agent-registry-Gtwn7nMp.js.map +1 -0
  3. package/dist/agent-registry.d.ts.map +1 -1
  4. package/dist/agent-registry.js +1 -1
  5. package/dist/{cli-B7jLigTF.js → cli-I6rP9FGr.js} +4 -4
  6. package/dist/{cli-B7jLigTF.js.map → cli-I6rP9FGr.js.map} +1 -1
  7. package/dist/cli.d.ts +1 -1
  8. package/dist/cli.d.ts.map +1 -1
  9. package/dist/cli.js +9 -9
  10. package/dist/{client-zT_kgYGW.d.ts → client-BaAmQKNy.d.ts} +3 -2
  11. package/dist/{client-zT_kgYGW.d.ts.map → client-BaAmQKNy.d.ts.map} +1 -1
  12. package/dist/{flows-DCYuQ4Wp.js → flows-7PaF7X66.js} +5 -5
  13. package/dist/{flows-DCYuQ4Wp.js.map → flows-7PaF7X66.js.map} +1 -1
  14. package/dist/flows.d.ts +2 -2
  15. package/dist/flows.js +1 -1
  16. package/dist/{invocation-options-BDk2PTpd.js → invocation-options-TRskRIuI.js} +13 -6
  17. package/dist/{invocation-options-BDk2PTpd.js.map → invocation-options-TRskRIuI.js.map} +1 -1
  18. package/dist/{ipc-B9IjR-45.js → ipc-D2BC99hf.js} +3 -6
  19. package/dist/ipc-D2BC99hf.js.map +1 -0
  20. package/dist/{output-BBKrvWhJ.js → output-CkfCaQfo.js} +3 -3
  21. package/dist/{output-BBKrvWhJ.js.map → output-CkfCaQfo.js.map} +1 -1
  22. package/dist/{queue-owner-runtime-DJ399xKB.js → queue-owner-runtime-CNrWkR8J.js} +123 -23
  23. package/dist/queue-owner-runtime-CNrWkR8J.js.map +1 -0
  24. package/dist/runtime.d.ts +21 -2
  25. package/dist/runtime.d.ts.map +1 -1
  26. package/dist/runtime.js +87 -31
  27. package/dist/runtime.js.map +1 -1
  28. package/dist/{session-options-CkcvthCv.d.ts → session-options-DVr_JUL7.d.ts} +11 -1
  29. package/dist/session-options-DVr_JUL7.d.ts.map +1 -0
  30. package/dist/{session-watch-Dpy75ytE.js → session-watch-BLLknspd.js} +4 -4
  31. package/dist/{session-watch-Dpy75ytE.js.map → session-watch-BLLknspd.js.map} +1 -1
  32. package/dist/{watch-BlnJqhro.js → watch-Db2D1eYN.js} +2 -2
  33. package/dist/{watch-BlnJqhro.js.map → watch-Db2D1eYN.js.map} +1 -1
  34. package/package.json +3 -3
  35. package/skills/acpx/SKILL.md +31 -3
  36. package/dist/agent-registry-kHdpsK9F.js.map +0 -1
  37. package/dist/ipc-B9IjR-45.js.map +0 -1
  38. package/dist/queue-owner-runtime-DJ399xKB.js.map +0 -1
  39. package/dist/session-options-CkcvthCv.d.ts.map +0 -1
package/dist/runtime.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { AcpAgentInspection, AcpAgentInspectionOptions, AcpAgentRegistry, AcpInspectableAgentRegistry, DEFAULT_AGENT_NAME, createAgentRegistry } from "./agent-registry.js";
2
- import { C as PermissionPolicy, E as PromptInput, S as PermissionMode, T as SessionRecord, _ as AcpProcessSpawnFailure, a as AcpElicitationHandler, b as McpServer$1, c as AcpElicitationResponse, d as AcpPermissionHandler, f as AcpPermissionRequest, g as AcpProcessLifecycle, h as AcpProcessLaunchScope, i as AcpElicitationContext, l as AcpJsonRpcMessage, m as AcpProcessLaunch, n as SystemPromptOption, o as AcpElicitationMode, p as AcpProcessExit, s as AcpElicitationRequest, t as SessionAgentOptions, u as AcpPermissionDecision, v as AcpProcessStarted, x as NonInteractivePermissionPolicy, y as AuthPolicy } from "./session-options-CkcvthCv.js";
3
- import { n as AcpControlAuthority, t as AcpClient } from "./client-zT_kgYGW.js";
2
+ import { C as PermissionPolicy, E as PromptInput, S as PermissionMode, T as SessionRecord, _ as AcpProcessSpawnFailure, a as AcpElicitationHandler, b as McpServer$1, c as AcpElicitationResponse, d as AcpPermissionHandler, f as AcpPermissionRequest, g as AcpProcessLifecycle, h as AcpProcessLaunchScope, i as AcpElicitationContext, l as AcpJsonRpcMessage, m as AcpProcessLaunch, n as SystemPromptOption, o as AcpElicitationMode, p as AcpProcessExit, s as AcpElicitationRequest, t as SessionAgentOptions, u as AcpPermissionDecision, v as AcpProcessStarted, x as NonInteractivePermissionPolicy, y as AuthPolicy } from "./session-options-DVr_JUL7.js";
3
+ import { n as AcpControlAuthority, t as AcpClient } from "./client-BaAmQKNy.js";
4
4
  import { z } from "zod";
5
5
  import { SetSessionConfigOptionResponse, ToolCallContent, ToolCallLocation, ToolKind } from "@agentclientprotocol/sdk";
6
6
  //#region src/acp/model-support.d.ts
@@ -407,6 +407,18 @@ type AcpRuntimeOptions = {
407
407
  cwd: string;
408
408
  /** Trusted child-only environment, snapshotted at construction and never persisted. */
409
409
  agentProcessEnv?: Record<string, string>;
410
+ /**
411
+ * Opt-in allowlist for agent children, command probes and ACP terminals: when set, they
412
+ * inherit only process essentials, these parent names and `ACPX_AUTH_*` grants.
413
+ * Snapshotted at construction. Explicit grants and overlays still apply.
414
+ */
415
+ agentProcessEnvAllow?: readonly string[];
416
+ /**
417
+ * Parent environment names withheld from agent children, command probes and ACP
418
+ * terminals, applied after `agentProcessEnvAllow` and snapshotted at construction.
419
+ * Explicit grants and overlays still apply.
420
+ */
421
+ agentProcessEnvBlock?: readonly string[];
410
422
  sessionStore: AcpSessionStore;
411
423
  agentRegistry: AcpAgentRegistry;
412
424
  /**
@@ -469,6 +481,10 @@ type InspectAgentModelsOptions = {
469
481
  timeoutMs?: number;
470
482
  /** Trusted child-only environment overlay; never persisted. */
471
483
  agentProcessEnv?: Record<string, string>;
484
+ /** Opt-in allowlist of parent environment names the inspected agent inherits. */
485
+ agentProcessEnvAllow?: readonly string[];
486
+ /** Parent environment names the inspected agent does not inherit. */
487
+ agentProcessEnvBlock?: readonly string[];
472
488
  };
473
489
  /**
474
490
  * Inspect session model metadata without a runtime store or prompt. The agent
@@ -593,6 +609,8 @@ declare class AcpRuntimeManager {
593
609
  private reuseRuntimeSession;
594
610
  private closeConflictingPersistentSession;
595
611
  private createOwnedRuntimeSession;
612
+ private abandonInitializingSessionOwner;
613
+ private settleRetiredSessionRecord;
596
614
  private prepareInitialRuntimeRecord;
597
615
  private retainInitializedSessionOwner;
598
616
  startTurn(input: RuntimeTurnTask["input"]): AcpRuntimeTurn;
@@ -642,6 +660,7 @@ declare class AcpRuntimeManager {
642
660
  discardPersistentState?: boolean;
643
661
  }): Promise<void>;
644
662
  private closeRuntimeSession;
663
+ private saveClosedRuntimeRecord;
645
664
  private resolveRuntimeRecordForClose;
646
665
  private markActiveRuntimeRecordClosing;
647
666
  private closeRuntimeRecordOwnership;
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","names":["McpServer","_$__public_contract_js0.AcpRuntimeEvent","_$__public_contract_js0.AcpRuntimeStatus","_$___runtime_js0.SessionWatchEvent","_$__runtime_js0.AcpRuntimeTurnResult"],"sources":["../src/acp/model-support.ts","../src/session/journal.ts","../src/runtime/public/contract.ts","../src/runtime/public/probe.ts","../src/runtime/engine/turn.ts","../src/runtime/engine/manager.ts","../src/runtime/public/file-session-store.ts","../src/runtime/public/errors.ts","../src/runtime/public/shared.ts","../src/runtime/public/handle-state.ts","../src/runtime/shared.ts","../src/runtime.ts"],"mappings":"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"}
1
+ {"version":3,"file":"runtime.d.ts","names":["McpServer","_$__public_contract_js0.AcpRuntimeEvent","_$__public_contract_js0.AcpRuntimeStatus","_$___runtime_js0.SessionWatchEvent","_$__runtime_js0.AcpRuntimeTurnResult"],"sources":["../src/acp/model-support.ts","../src/session/journal.ts","../src/runtime/public/contract.ts","../src/runtime/public/probe.ts","../src/runtime/engine/turn.ts","../src/runtime/engine/manager.ts","../src/runtime/public/file-session-store.ts","../src/runtime/public/errors.ts","../src/runtime/public/shared.ts","../src/runtime/public/handle-state.ts","../src/runtime/shared.ts","../src/runtime.ts"],"mappings":"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"}
package/dist/runtime.js CHANGED
@@ -1,7 +1,7 @@
1
- import { A as findSession, B as assertPersistedKeyPolicy, C as textPrompt, Dt as normalizeOutputError, L as readSessionRecord, Ot as extractAcpError, R as resolveSessionRecord, U as serializeSessionRecordForDisk, V as parseSessionRecord, bt as writePrivateJsonFile, kt as isAcpResourceNotFoundError, t as tryCancelOnRunningOwner } from "./ipc-B9IjR-45.js";
2
- import { O as normalizeAgentCommandInput, a as createAgentRegistry, i as DEFAULT_AGENT_NAME } from "./agent-registry-kHdpsK9F.js";
3
- import { $ as isRequestedModelUnsupportedError, A as applyInitialModelSelection, B as reconcileAgentSessionId, C as setSessionModeOnOwner, D as connectAndLoadSession, E as withConnectedSession, F as persistSessionOptions, G as recordSessionUpdate, I as sessionOptionsFromRecord, J as advertisedModelState, K as trimConversationForRuntime, L as applyConversation, M as applyRequestedModelIfAdvertised, N as setDesiredModeId, O as applyConfigOptionSelection, P as normalizeSessionOptionShape, Q as RequestedModelUnsupportedError, R as applyLifecycleSnapshotToRecord, T as setSessionModelOnOwner, U as recordClientOperation, V as cloneSessionConversation, W as recordPromptSubmission, X as REQUESTED_MODEL_UNSUPPORTED_ERROR_CODE, Y as AcpClient, Z as REQUESTED_MODEL_UNSUPPORTED_REASONS, _ as cancelSessionPrompt, c as LiveSessionCheckpoint, dt as TimeoutError, et as resolveRequestedConfigOption, ft as assertControlAuthority, h as ensureSession, j as applyModelSelection, k as applyConfigOptionsToRecord, l as runPromptTurn, mt as withTimeout, q as cloneSessionAcpxState, r as sendSession, s as DISCARD_OUTPUT_FORMATTER, tt as resolveRequestedModelId, v as closeSession, x as setSessionConfigOptionOnOwner, z as createInitialSessionRecord } from "./queue-owner-runtime-DJ399xKB.js";
4
- import { t as watchSession } from "./watch-BlnJqhro.js";
1
+ import { A as findSession, B as assertPersistedKeyPolicy, C as textPrompt, Dt as normalizeOutputError, L as readSessionRecord, Ot as extractAcpError, R as resolveSessionRecord, U as serializeSessionRecordForDisk, V as parseSessionRecord, bt as writePrivateJsonFile, kt as isAcpResourceNotFoundError, t as tryCancelOnRunningOwner } from "./ipc-D2BC99hf.js";
2
+ import { O as normalizeAgentCommandInput, a as createAgentRegistry, i as DEFAULT_AGENT_NAME } from "./agent-registry-Gtwn7nMp.js";
3
+ import { $ as isRequestedModelUnsupportedError, A as applyInitialModelSelection, B as reconcileAgentSessionId, C as setSessionModeOnOwner, D as connectAndLoadSession, E as withConnectedSession, F as persistSessionOptions, G as recordSessionUpdate, I as sessionOptionsFromRecord, J as advertisedModelState, K as trimConversationForRuntime, L as applyConversation, M as applyRequestedModelIfAdvertised, N as setDesiredModeId, O as applyConfigOptionSelection, P as normalizeSessionOptionShape, Q as RequestedModelUnsupportedError, R as applyLifecycleSnapshotToRecord, T as setSessionModelOnOwner, U as recordClientOperation, V as cloneSessionConversation, W as recordPromptSubmission, X as REQUESTED_MODEL_UNSUPPORTED_ERROR_CODE, Y as AcpClient, Z as REQUESTED_MODEL_UNSUPPORTED_REASONS, _ as cancelSessionPrompt, c as LiveSessionCheckpoint, et as resolveRequestedConfigOption, ft as TimeoutError, h as ensureSession, ht as withTimeout, j as applyModelSelection, k as applyConfigOptionsToRecord, l as runPromptTurn, pt as assertControlAuthority, q as cloneSessionAcpxState, r as sendSession, rt as snapshotEnvNames, s as DISCARD_OUTPUT_FORMATTER, tt as resolveRequestedModelId, v as closeSession, x as setSessionConfigOptionOnOwner, z as createInitialSessionRecord } from "./queue-owner-runtime-CNrWkR8J.js";
4
+ import { t as watchSession } from "./watch-Db2D1eYN.js";
5
5
  import { fileURLToPath } from "node:url";
6
6
  import path from "node:path";
7
7
  import fs from "node:fs/promises";
@@ -592,6 +592,8 @@ async function inspectAgentModels(options) {
592
592
  ...normalizeAgentCommandInput(options.agentCommand),
593
593
  cwd: options.cwd,
594
594
  agentProcessEnv: options.agentProcessEnv,
595
+ agentProcessEnvAllow: options.agentProcessEnvAllow,
596
+ agentProcessEnvBlock: options.agentProcessEnvBlock,
595
597
  permissionMode: "deny-all",
596
598
  nonInteractivePermissions: "deny",
597
599
  fs: false,
@@ -699,6 +701,8 @@ function createProbeClient(options, agentName, agentCommand, deps) {
699
701
  ...agentCommand,
700
702
  cwd: options.cwd,
701
703
  agentProcessEnv: options.agentProcessEnv,
704
+ agentProcessEnvAllow: options.agentProcessEnvAllow,
705
+ agentProcessEnvBlock: options.agentProcessEnvBlock,
702
706
  mcpServers: typeof options.mcpServers === "function" ? [] : [...options.mcpServers ?? []],
703
707
  permissionMode: options.permissionMode,
704
708
  nonInteractivePermissions: options.nonInteractivePermissions,
@@ -1013,6 +1017,8 @@ var AcpRuntimeManager = class {
1013
1017
  const clientOptions = {
1014
1018
  ...options,
1015
1019
  agentProcessEnv: this.options.agentProcessEnv,
1020
+ agentProcessEnvAllow: this.options.agentProcessEnvAllow,
1021
+ agentProcessEnvBlock: this.options.agentProcessEnvBlock,
1016
1022
  processLifecycle: {
1017
1023
  ...options.processLifecycle,
1018
1024
  onBeforeSpawn: async (launch) => {
@@ -1126,7 +1132,7 @@ var AcpRuntimeManager = class {
1126
1132
  return owner;
1127
1133
  }
1128
1134
  async saveSessionOwner(owner) {
1129
- if (!owner.recordId) return;
1135
+ if (!owner.recordId || owner.pendingResetRecord) return;
1130
1136
  const active = owner.activeTurn?.turn;
1131
1137
  const target = active ?? owner.projection;
1132
1138
  if (!target) return;
@@ -1225,11 +1231,18 @@ var AcpRuntimeManager = class {
1225
1231
  const flushAttempt = await settleAttempt(async () => this.flushSessionOwner(owner));
1226
1232
  const closeAttempt = await settleAttempt(async () => this.closeClient(owner.client));
1227
1233
  if (!closeAttempt.ok) this.retiringSessionOwners.add(owner);
1234
+ const finalFlushAttempt = await settleAttempt(async () => owner.checkpoint.flush());
1235
+ const clearAttempt = await settleAttempt(() => owner.client.clearEventHandlers());
1236
+ const settleRecordAttempt = await settleAttempt(async () => {
1237
+ if (closeAttempt.ok) await this.settleRetiredSessionRecord(owner);
1238
+ });
1239
+ if (!settleRecordAttempt.ok) this.retiringSessionOwners.add(owner);
1228
1240
  return firstFailedAttempt([
1229
1241
  flushAttempt,
1230
1242
  closeAttempt,
1231
- await settleAttempt(async () => owner.checkpoint.flush()),
1232
- await settleAttempt(() => owner.client.clearEventHandlers())
1243
+ finalFlushAttempt,
1244
+ clearAttempt,
1245
+ settleRecordAttempt
1233
1246
  ]);
1234
1247
  }
1235
1248
  async retrySessionCleanup(recordId) {
@@ -1237,7 +1250,8 @@ var AcpRuntimeManager = class {
1237
1250
  owner.retirement ??= this.finalizeSessionConnection({
1238
1251
  client: owner.client,
1239
1252
  owner
1240
- }).then(() => {
1253
+ }).then(async () => {
1254
+ await this.settleRetiredSessionRecord(owner);
1241
1255
  this.retiringSessionOwners.delete(owner);
1242
1256
  }).finally(() => {
1243
1257
  owner.retirement = void 0;
@@ -1427,6 +1441,7 @@ var AcpRuntimeManager = class {
1427
1441
  return await this.withManagerLock(this.runtimeOperationLocks, input.sessionKey, async () => this.acquireRuntimeSession(input, agent));
1428
1442
  }
1429
1443
  async reuseCompatiblePersistentSession(input, agent) {
1444
+ await this.retrySessionCleanup(input.sessionKey);
1430
1445
  const controlled = this.controlSessionRecords.get(input.sessionKey);
1431
1446
  const record = controlled ? controlled.record : await this.findSession(input.sessionKey);
1432
1447
  if (!record || this.closingActiveRecords.has(input.sessionKey) || !shouldReuseExistingRecord(record, {
@@ -1520,7 +1535,6 @@ var AcpRuntimeManager = class {
1520
1535
  sessionKey: input.sessionKey,
1521
1536
  mode: input.mode
1522
1537
  });
1523
- let retained = false;
1524
1538
  try {
1525
1539
  await startRuntimeClient(client, agent, this.options.timeoutMs);
1526
1540
  this.assertOpen();
@@ -1535,16 +1549,32 @@ var AcpRuntimeManager = class {
1535
1549
  session
1536
1550
  });
1537
1551
  await this.retainInitializedSessionOwner(owner, record);
1538
- retained = true;
1539
1552
  return record;
1540
- } finally {
1541
- if (!retained) {
1542
- owner.recordId = void 0;
1543
- client.clearEventHandlers();
1544
- await this.closeClient(client);
1545
- }
1553
+ } catch (error) {
1554
+ await settleAttempt(async () => this.abandonInitializingSessionOwner(owner));
1555
+ throw error;
1546
1556
  }
1547
1557
  }
1558
+ async abandonInitializingSessionOwner(owner) {
1559
+ const record = owner.recordId ? owner.projection?.record : void 0;
1560
+ owner.pendingResetRecord = record;
1561
+ await settleAttempt(() => owner.client.clearEventHandlers());
1562
+ const closeAttempt = await settleAttempt(async () => this.closeClient(owner.client));
1563
+ if (!record) return;
1564
+ this.retiringSessionOwners.add(owner);
1565
+ if (closeAttempt.ok) {
1566
+ await this.settleRetiredSessionRecord(owner);
1567
+ this.retiringSessionOwners.delete(owner);
1568
+ }
1569
+ }
1570
+ async settleRetiredSessionRecord(owner) {
1571
+ const record = owner.pendingResetRecord;
1572
+ if (!record) return;
1573
+ applyLifecycleSnapshotToRecord(record, owner.client.getAgentLifecycleSnapshot());
1574
+ await this.saveClosedRuntimeRecord(record, true);
1575
+ owner.pendingResetRecord = void 0;
1576
+ owner.recordId = void 0;
1577
+ }
1548
1578
  async prepareInitialRuntimeRecord(params) {
1549
1579
  const { input, client, owner, agentCommand, agentArgv, cwd, session } = params;
1550
1580
  const record = createInitialSessionRecord({
@@ -2159,9 +2189,22 @@ var AcpRuntimeManager = class {
2159
2189
  const record = await this.resolveRuntimeRecordForClose(recordId);
2160
2190
  this.markActiveRuntimeRecordClosing(record);
2161
2191
  if (intent !== "prepare-fresh") await this.cancelSessionTasks(recordId);
2162
- await this.closeRuntimeRecordOwnership(record, intent);
2192
+ const closeFailure = await this.closeRuntimeRecordOwnership(record, intent);
2193
+ if (intent === "discard") {
2194
+ if (closeFailure) throw closeFailure.error;
2195
+ return;
2196
+ }
2197
+ const saveAttempt = await settleAttempt(async () => this.saveClosedRuntimeRecord(record, intent !== "release"));
2198
+ const failure = closeFailure ?? firstFailedAttempt([saveAttempt]);
2199
+ if (failure) throw failure.error;
2200
+ }
2201
+ async saveClosedRuntimeRecord(record, reset) {
2163
2202
  record.closed = true;
2164
2203
  record.closedAt = isoNow();
2204
+ if (reset) record.acpx = {
2205
+ ...record.acpx,
2206
+ reset_on_next_ensure: true
2207
+ };
2165
2208
  await this.options.sessionStore.save(record);
2166
2209
  }
2167
2210
  async resolveRuntimeRecordForClose(recordId) {
@@ -2173,7 +2216,7 @@ var AcpRuntimeManager = class {
2173
2216
  if (this.activeControllers.has(record.acpxRecordId)) this.closingActiveRecords.add(record.acpxRecordId);
2174
2217
  }
2175
2218
  async closeRuntimeRecordOwnership(record, intent) {
2176
- if (intent === "discard") await this.closeBackendSession(record);
2219
+ if (intent === "discard") return await this.closeBackendSession(record);
2177
2220
  else if (intent === "prepare-fresh") {
2178
2221
  const owner = this.retainedSessionOwners.get(record.acpxRecordId);
2179
2222
  if (owner) {
@@ -2182,20 +2225,29 @@ var AcpRuntimeManager = class {
2182
2225
  }
2183
2226
  await this.retrySessionCleanup(record.acpxRecordId);
2184
2227
  } else await this.closeRetainedSessionOwner(record.acpxRecordId);
2185
- if (intent !== "release") record.acpx = {
2186
- ...record.acpx,
2187
- reset_on_next_ensure: true
2188
- };
2189
2228
  }
2190
2229
  async closeBackendSession(record) {
2191
2230
  const connection = await this.acquireBackendCloseConnection(record);
2192
- try {
2193
- await this.requestBackendSessionClose(record, connection);
2194
- } catch (error) {
2195
- this.handleBackendSessionCloseError(record, error);
2196
- } finally {
2197
- await this.finalizeSessionConnection(connection);
2198
- }
2231
+ const requestAttempt = await settleAttempt(async () => {
2232
+ try {
2233
+ await this.requestBackendSessionClose(record, connection);
2234
+ } catch (error) {
2235
+ this.handleBackendSessionCloseError(record, error);
2236
+ }
2237
+ });
2238
+ const owner = connection.owner ?? this.createSessionOwner({
2239
+ client: connection.client,
2240
+ sessionKey: record.acpxRecordId,
2241
+ mode: "persistent"
2242
+ });
2243
+ owner.recordId = record.acpxRecordId;
2244
+ const finalizeAttempt = await settleAttempt(async () => this.finalizeSessionConnection(connection));
2245
+ owner.pendingResetRecord = record;
2246
+ this.retiringSessionOwners.add(owner);
2247
+ if (!finalizeAttempt.ok) throw finalizeAttempt.error;
2248
+ const saveAttempt = await settleAttempt(async () => this.settleRetiredSessionRecord(owner));
2249
+ if (saveAttempt.ok) this.retiringSessionOwners.delete(owner);
2250
+ return firstFailedAttempt([requestAttempt, saveAttempt]);
2199
2251
  }
2200
2252
  async finalizeSessionConnection(connection) {
2201
2253
  const failure = firstFailedAttempt([
@@ -2380,6 +2432,8 @@ var SharedAcpRuntime = class {
2380
2432
  for (const name of [
2381
2433
  "sessionStore",
2382
2434
  "agentProcessEnv",
2435
+ "agentProcessEnvAllow",
2436
+ "agentProcessEnvBlock",
2383
2437
  "mcpServers",
2384
2438
  "sessionPermissions",
2385
2439
  "processLifecycle",
@@ -2639,9 +2693,11 @@ var AcpxRuntime = class {
2639
2693
  constructor(options, testOptions) {
2640
2694
  this.options = options;
2641
2695
  this.testOptions = testOptions;
2642
- if (options.agentProcessEnv) this.options = {
2696
+ if (options.agentProcessEnv || options.agentProcessEnvAllow !== void 0 || options.agentProcessEnvBlock !== void 0) this.options = {
2643
2697
  ...options,
2644
- agentProcessEnv: { ...options.agentProcessEnv }
2698
+ agentProcessEnv: options.agentProcessEnv ? { ...options.agentProcessEnv } : void 0,
2699
+ agentProcessEnvAllow: snapshotEnvNames("agentProcessEnvAllow", options.agentProcessEnvAllow),
2700
+ agentProcessEnvBlock: snapshotEnvNames("agentProcessEnvBlock", options.agentProcessEnvBlock)
2645
2701
  };
2646
2702
  }
2647
2703
  isHealthy() {