@moxt-ai/mobius 0.0.7 → 0.0.8

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.
@@ -4,7 +4,7 @@ declare const nativeSessionInfoSchema: z.ZodReadonly<z.ZodObject<{
4
4
  sessionId: z.ZodString;
5
5
  cwd: z.ZodString;
6
6
  additionalDirectories: z.ZodReadonly<z.ZodDefault<z.ZodArray<z.ZodString>>>;
7
- title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
7
+ title: z.ZodOptional<z.ZodNullable<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>>;
8
8
  updatedAt: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
9
9
  }, z.core.$strip>>;
10
10
  export type NativeSessionInfo = z.infer<typeof nativeSessionInfoSchema>;
@@ -13,7 +13,7 @@ export declare const nativeSessionPageSchema: z.ZodReadonly<z.ZodObject<{
13
13
  sessionId: z.ZodString;
14
14
  cwd: z.ZodString;
15
15
  additionalDirectories: z.ZodReadonly<z.ZodDefault<z.ZodArray<z.ZodString>>>;
16
- title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
16
+ title: z.ZodOptional<z.ZodNullable<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>>;
17
17
  updatedAt: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
18
18
  }, z.core.$strip>>>>;
19
19
  nextCursor: z.ZodOptional<z.ZodNullable<z.ZodString>>;
@@ -1 +1 @@
1
- {"version":3,"file":"native-session.d.ts","sourceRoot":"","sources":["../../src/acp/native-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,qBAAqB,aAEa,CAAC;AAChD,QAAA,MAAM,uBAAuB;;;;;;kBAQhB,CAAC;AACd,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,eAAO,MAAM,uBAAuB;;;;;;;;;kBAKvB,CAAC;AACd,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,MAAM,MAAM,mBAAmB,GAC3B;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;CAAE,GAC7D;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;CAAE,CAAC"}
1
+ {"version":3,"file":"native-session.d.ts","sourceRoot":"","sources":["../../src/acp/native-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,eAAO,MAAM,qBAAqB,aAEa,CAAC;AAChD,QAAA,MAAM,uBAAuB;;;;;;kBAQhB,CAAC;AACd,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,eAAO,MAAM,uBAAuB;;;;;;;;;kBAKvB,CAAC;AACd,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,MAAM,MAAM,mBAAmB,GAC3B;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;CAAE,GAC7D;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;CAAE,CAAC"}
@@ -4,6 +4,7 @@ const path = z
4
4
  .min(1)
5
5
  .max(2_048)
6
6
  .refine((value) => !value.includes("\0"));
7
+ const title = z.string().transform((value) => value.slice(0, 500));
7
8
  export const nativeSessionIdSchema = z
8
9
  .string()
9
10
  .regex(/^[a-zA-Z0-9][a-zA-Z0-9._:-]{0,255}$/);
@@ -12,7 +13,7 @@ const nativeSessionInfoSchema = z
12
13
  sessionId: nativeSessionIdSchema,
13
14
  cwd: path,
14
15
  additionalDirectories: z.array(path).max(16).default([]).readonly(),
15
- title: z.string().max(500).nullish(),
16
+ title: title.nullish(),
16
17
  updatedAt: z.iso.datetime({ offset: true }).nullish(),
17
18
  })
18
19
  .readonly();
@@ -1 +1 @@
1
- {"version":3,"file":"native-session.js","sourceRoot":"","sources":["../../src/acp/native-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,IAAI,GAAG,CAAC;KACX,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,GAAG,CAAC,KAAK,CAAC;KACV,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC;KACnC,MAAM,EAAE;KACR,KAAK,CAAC,qCAAqC,CAAC,CAAC;AAChD,MAAM,uBAAuB,GAAG,CAAC;KAC9B,MAAM,CAAC;IACN,SAAS,EAAE,qBAAqB;IAChC,GAAG,EAAE,IAAI;IACT,qBAAqB,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IACnE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE;IACpC,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE;CACtD,CAAC;KACD,QAAQ,EAAE,CAAC;AAEd,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC;KACrC,MAAM,CAAC;IACN,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC9D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE;CACnD,CAAC;KACD,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"native-session.js","sourceRoot":"","sources":["../../src/acp/native-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,IAAI,GAAG,CAAC;KACX,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,GAAG,CAAC,KAAK,CAAC;KACV,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACnE,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC;KACnC,MAAM,EAAE;KACR,KAAK,CAAC,qCAAqC,CAAC,CAAC;AAChD,MAAM,uBAAuB,GAAG,CAAC;KAC9B,MAAM,CAAC;IACN,SAAS,EAAE,qBAAqB;IAChC,GAAG,EAAE,IAAI;IACT,qBAAqB,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IACnE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE;IACtB,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE;CACtD,CAAC;KACD,QAAQ,EAAE,CAAC;AAEd,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC;KACrC,MAAM,CAAC;IACN,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC9D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE;CACnD,CAAC;KACD,QAAQ,EAAE,CAAC"}
@@ -81,6 +81,7 @@ declare class AcpProcessSession implements AcpClientHandler {
81
81
  #private;
82
82
  private constructor();
83
83
  static readonly start: (options: AcpPrepareOptions, getObserver: () => AcpSessionObserver, store: AcpSessionStore) => Promise<AcpProcessSession>;
84
+ static readonly startNativeSessionBrowser: (options: AcpPrepareOptions, getObserver: () => AcpSessionObserver, store: AcpSessionStore) => Promise<AcpProcessSession>;
84
85
  readonly belongsTo: (agentId: string, cwd: string, additionalDirectories: readonly string[]) => boolean;
85
86
  readonly canRebind: () => boolean;
86
87
  readonly prepared: () => AcpPreparedSession;
@@ -113,6 +114,7 @@ export declare class AcpSessionManager {
113
114
  constructor(observer?: AcpSessionObserver, store?: AcpSessionStore);
114
115
  readonly setObserver: (observer: AcpSessionObserver) => void;
115
116
  readonly prepareSession: (options: AcpPrepareOptions) => Promise<AcpPreparedSession>;
117
+ readonly prepareNativeSessionBrowser: (options: AcpPrepareOptions) => Promise<AcpPreparedSession>;
116
118
  readonly configureSession: (options: AcpConfigureOptions) => Promise<readonly SessionConfigOption[]>;
117
119
  readonly cancelPrompt: (sessionId: string) => Promise<void>;
118
120
  readonly runPrompt: (options: AcpTurnOptions) => Promise<AcpPromptResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/acp/session-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/acp/session-manager.ts"],"names":[],"mappings":"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"}
@@ -44,6 +44,12 @@ export class AcpExecutionError extends Error {
44
44
  this.name = "AcpExecutionError";
45
45
  }
46
46
  }
47
+ class RetryableAcpInitializationError extends AcpExecutionError {
48
+ constructor(cause) {
49
+ super("ACP agent initialization failed", { cause });
50
+ this.name = "RetryableAcpInitializationError";
51
+ }
52
+ }
47
53
  function readableWebStream(input) {
48
54
  let streamOpen = true;
49
55
  return new ReadableStream({
@@ -631,32 +637,41 @@ class AcpProcessSession {
631
637
  const stream = ndJsonStream(createWritableAcpStream(stdin), readableWebStream(stdout));
632
638
  this.#connection = createAcpClient(this).connect(stream);
633
639
  }
634
- static start = async (options, getObserver, store) => {
635
- options.signal.throwIfAborted();
636
- const [adapterUnchanged, agentUnchanged] = await Promise.all([
637
- revalidateExecutable(options.agent.adapterIdentity),
638
- revalidateExecutable(options.agent.agentIdentity),
639
- ]);
640
- options.signal.throwIfAborted();
641
- if (!adapterUnchanged || !agentUnchanged) {
642
- throw new AcpExecutionError("The local Agent runtime changed; restart Mobius before starting a new conversation", {}, "agent_runtime_changed");
643
- }
644
- const runtime = new AcpProcessSession(options.agent, options.cwd, options.additionalDirectories, options.sessionId, getObserver, store);
645
- try {
646
- await runtime.initialize(options.signal, options.origin);
647
- return runtime;
648
- }
649
- catch (error) {
650
- await runtime.closeProcess();
640
+ static async #start(options, getObserver, store, initialize) {
641
+ for (let attempt = 1; attempt <= 2; attempt += 1) {
651
642
  options.signal.throwIfAborted();
652
- if (error instanceof AcpExecutionError) {
653
- throw error;
643
+ const [adapterUnchanged, agentUnchanged] = await Promise.all([
644
+ revalidateExecutable(options.agent.adapterIdentity),
645
+ revalidateExecutable(options.agent.agentIdentity),
646
+ ]);
647
+ options.signal.throwIfAborted();
648
+ if (!adapterUnchanged || !agentUnchanged) {
649
+ throw new AcpExecutionError("The local Agent runtime changed; restart Mobius before starting a new conversation", {}, "agent_runtime_changed");
650
+ }
651
+ const runtime = new AcpProcessSession(options.agent, options.cwd, options.additionalDirectories, options.sessionId, getObserver, store);
652
+ try {
653
+ await initialize(runtime);
654
+ return runtime;
655
+ }
656
+ catch (error) {
657
+ await runtime.closeProcess();
658
+ options.signal.throwIfAborted();
659
+ if (error instanceof RetryableAcpInitializationError && attempt === 1) {
660
+ console.warn(`[${options.agent.id}-acp] ACP agent initialization failed; retrying once`);
661
+ continue;
662
+ }
663
+ if (error instanceof AcpExecutionError) {
664
+ throw error;
665
+ }
666
+ throw new AcpExecutionError("ACP agent initialization failed", {
667
+ cause: error,
668
+ });
654
669
  }
655
- throw new AcpExecutionError("ACP agent initialization failed", {
656
- cause: error,
657
- });
658
670
  }
659
- };
671
+ throw new AcpExecutionError("ACP agent initialization failed");
672
+ }
673
+ static start = async (options, getObserver, store) => await AcpProcessSession.#start(options, getObserver, store, async (runtime) => await runtime.initialize(options.signal, options.origin));
674
+ static startNativeSessionBrowser = async (options, getObserver, store) => await AcpProcessSession.#start(options, getObserver, store, async (runtime) => await runtime.#initializeAgent(options.signal));
660
675
  belongsTo = (agentId, cwd, additionalDirectories) => this.#agentId === agentId &&
661
676
  this.#cwd === cwd &&
662
677
  arraysEqual(this.#additionalDirectories, additionalDirectories);
@@ -682,7 +697,7 @@ class AcpProcessSession {
682
697
  this.#replay = { kind: "idle" };
683
698
  }
684
699
  };
685
- initialize = async (signal, origin) => {
700
+ async #initializeAgent(signal) {
686
701
  const initialized = await this.race(this.#connection.agent.request(methods.agent.initialize, {
687
702
  clientCapabilities: {
688
703
  elicitation: { form: {}, url: {} },
@@ -691,7 +706,10 @@ class AcpProcessSession {
691
706
  },
692
707
  clientInfo: { name: "mobius", version: "0.0.3" },
693
708
  protocolVersion: PROTOCOL_VERSION,
694
- }, { cancellationSignal: signal }), "ACP agent exited during initialization", signal);
709
+ }, { cancellationSignal: signal }), "ACP agent exited during initialization", signal).catch((cause) => {
710
+ signal.throwIfAborted();
711
+ throw new RetryableAcpInitializationError(cause);
712
+ });
695
713
  if (initialized.protocolVersion !== PROTOCOL_VERSION) {
696
714
  throw new AcpExecutionError("ACP agent selected an unsupported protocol version", {}, "unsupported_acp_protocol");
697
715
  }
@@ -701,6 +719,9 @@ class AcpProcessSession {
701
719
  initialized.agentInfo?.name ??
702
720
  this.#agentId, 255);
703
721
  this.#agentVersion = truncate(initialized.agentInfo?.version ?? "", 128);
722
+ }
723
+ initialize = async (signal, origin) => {
724
+ await this.#initializeAgent(signal);
704
725
  const stored = origin?.kind === "import"
705
726
  ? new FoundAcpStoredSession(new AcpStoredSession(this.#mobiusSessionId, this.#agentId, nativeSessionIdSchema.parse(origin.nativeSessionId), this.#cwd, this.#additionalDirectories, true))
706
727
  : this.#store.read(this.#mobiusSessionId);
@@ -1313,6 +1334,10 @@ class AcpProcessSession {
1313
1334
  }
1314
1335
  export class AcpSessionManager {
1315
1336
  #nativeOperations = new Set();
1337
+ #nativeBrowserObserver = new NullAcpSessionObserver();
1338
+ #nativeBrowserPreparing = new Map();
1339
+ #nativeBrowserSessions = new Map();
1340
+ #nativeBrowserStore = new MemoryAcpSessionStore();
1316
1341
  #activeSessionIds = new Set();
1317
1342
  #cancellationRequests = new Set();
1318
1343
  #preparing = new Map();
@@ -1326,6 +1351,37 @@ export class AcpSessionManager {
1326
1351
  setObserver = (observer) => {
1327
1352
  this.#observer = observer;
1328
1353
  };
1354
+ async #startNativeBrowserPreparation(options) {
1355
+ const operation = (async () => {
1356
+ try {
1357
+ const runtime = await AcpProcessSession.startNativeSessionBrowser(options, () => this.#nativeBrowserObserver, this.#nativeBrowserStore);
1358
+ this.#nativeBrowserSessions.set(options.sessionId, runtime);
1359
+ return runtime;
1360
+ }
1361
+ finally {
1362
+ this.#nativeBrowserPreparing.delete(options.sessionId);
1363
+ }
1364
+ })();
1365
+ this.#nativeBrowserPreparing.set(options.sessionId, operation);
1366
+ return await operation;
1367
+ }
1368
+ async #replaceNativeBrowserPreparation(existing, options) {
1369
+ const operation = (async () => {
1370
+ try {
1371
+ this.#nativeBrowserSessions.delete(options.sessionId);
1372
+ await existing.close();
1373
+ this.#nativeBrowserStore.remove(options.sessionId);
1374
+ const runtime = await AcpProcessSession.startNativeSessionBrowser(options, () => this.#nativeBrowserObserver, this.#nativeBrowserStore);
1375
+ this.#nativeBrowserSessions.set(options.sessionId, runtime);
1376
+ return runtime;
1377
+ }
1378
+ finally {
1379
+ this.#nativeBrowserPreparing.delete(options.sessionId);
1380
+ }
1381
+ })();
1382
+ this.#nativeBrowserPreparing.set(options.sessionId, operation);
1383
+ return await operation;
1384
+ }
1329
1385
  async #startPreparation(options) {
1330
1386
  const operation = (async () => {
1331
1387
  try {
@@ -1386,6 +1442,29 @@ export class AcpSessionManager {
1386
1442
  const runtime = await this.#startPreparation(options);
1387
1443
  return runtime.prepared();
1388
1444
  };
1445
+ prepareNativeSessionBrowser = async (options) => {
1446
+ const pending = this.#nativeBrowserPreparing.get(options.sessionId);
1447
+ if (pending !== undefined) {
1448
+ const runtime = await pending;
1449
+ if (runtime.belongsTo(options.agent.id, options.cwd, options.additionalDirectories)) {
1450
+ return runtime.prepared();
1451
+ }
1452
+ return await this.prepareNativeSessionBrowser(options);
1453
+ }
1454
+ const existing = this.#nativeBrowserSessions.get(options.sessionId);
1455
+ if (existing !== undefined) {
1456
+ if (existing.belongsTo(options.agent.id, options.cwd, options.additionalDirectories)) {
1457
+ return existing.prepared();
1458
+ }
1459
+ if (!existing.canRebind()) {
1460
+ throw new AcpExecutionError("The agent or workspace cannot change after a conversation has started", {}, "session_identity_mismatch");
1461
+ }
1462
+ const runtime = await this.#replaceNativeBrowserPreparation(existing, options);
1463
+ return runtime.prepared();
1464
+ }
1465
+ const runtime = await this.#startNativeBrowserPreparation(options);
1466
+ return runtime.prepared();
1467
+ };
1389
1468
  configureSession = async (options) => {
1390
1469
  const runtime = await this.ensureSession(options);
1391
1470
  return await runtime.configure(options);
@@ -1453,8 +1532,10 @@ export class AcpSessionManager {
1453
1532
  };
1454
1533
  close = async () => {
1455
1534
  const sessions = [...this.#sessions.values()];
1535
+ const nativeBrowserSessions = [...this.#nativeBrowserSessions.values()];
1456
1536
  this.#sessions.clear();
1457
- await Promise.all(sessions.map(async (session) => await session.close()));
1537
+ this.#nativeBrowserSessions.clear();
1538
+ await Promise.all([...sessions, ...nativeBrowserSessions].map(async (session) => await session.close()));
1458
1539
  };
1459
1540
  ensureSession = async (options) => {
1460
1541
  const existing = this.#sessions.get(options.sessionId);
@@ -1471,7 +1552,22 @@ export class AcpSessionManager {
1471
1552
  }
1472
1553
  return started;
1473
1554
  };
1474
- listNativeSessions = async (options, cursor) => await (await this.ensureSession(options)).listNativeSessions(cursor, options.signal);
1555
+ async #ensureNativeSessionBrowser(options) {
1556
+ const existing = this.#nativeBrowserSessions.get(options.sessionId);
1557
+ if (existing !== undefined) {
1558
+ if (!existing.belongsTo(options.agent.id, options.cwd, options.additionalDirectories)) {
1559
+ throw new AcpExecutionError("The agent or workspace cannot change after a conversation has started", {}, "session_identity_mismatch");
1560
+ }
1561
+ return existing;
1562
+ }
1563
+ await this.prepareNativeSessionBrowser(options);
1564
+ const started = this.#nativeBrowserSessions.get(options.sessionId);
1565
+ if (started === undefined) {
1566
+ throw new AcpExecutionError("ACP native session browser did not start");
1567
+ }
1568
+ return started;
1569
+ }
1570
+ listNativeSessions = async (options, cursor) => await (await this.#ensureNativeSessionBrowser(options)).listNativeSessions(cursor, options.signal);
1475
1571
  openNativeSession = async (options, origin) => {
1476
1572
  const key = `${options.agent.id}:${origin.nativeSessionId}`;
1477
1573
  if (this.#nativeOperations.has(key))
@@ -1540,7 +1636,7 @@ export class AcpSessionManager {
1540
1636
  }
1541
1637
  };
1542
1638
  deleteNativeSession = async (options, nativeSessionId) => {
1543
- const runtime = await this.ensureSession(options);
1639
+ const runtime = await this.#ensureNativeSessionBrowser(options);
1544
1640
  const key = `${options.agent.id}:${nativeSessionId}`;
1545
1641
  const linked = this.#store.findNative(options.agent.id, nativeSessionId);
1546
1642
  if (this.#nativeOperations.has(key) ||
@@ -1560,7 +1656,8 @@ export class AcpSessionManager {
1560
1656
  await runtime.deleteNativeSession(nativeSessionId, options.signal);
1561
1657
  const deleted = this.#store.markDeleted(options.agent.id, nativeSessionId);
1562
1658
  if (runtime.nativeSessionId() === nativeSessionId) {
1563
- this.#sessions.delete(options.sessionId);
1659
+ this.#nativeBrowserSessions.delete(options.sessionId);
1660
+ this.#nativeBrowserStore.remove(options.sessionId);
1564
1661
  await runtime.close();
1565
1662
  }
1566
1663
  return deleted;